efl_ui: move clickable from efl to efl_ui

Summary:
efl_ui_clickable is now a mixin. The mixin now brings two APIs the press
and unpress API can be used to tell the implementation the state of the
presses. Within the implementation the calls to press / unpress are then
converted to longpress / clicked events.

Reviewers: zmike, segfaultxavi, cedric

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8820
This commit is contained in:
Marcel Hollerbach 2019-05-14 15:50:15 -04:00 committed by Mike Blumenkrantz
parent 7f907ecd9d
commit 64923b8db1
33 changed files with 327 additions and 43 deletions

View File

@ -7,7 +7,6 @@ efl_eolian_legacy_files = \
lib/efl/interfaces/efl_gfx_frame_controller.eo \
lib/efl/interfaces/efl_input_device.eo \
lib/efl/interfaces/efl_ui_draggable.eo \
lib/efl/interfaces/efl_ui_clickable.eo \
lib/efl/interfaces/efl_ui_scrollable.eo \
lib/efl/interfaces/efl_ui_scrollable_interactive.eo \
lib/efl/interfaces/efl_ui_scrollbar.eo \

View File

@ -132,6 +132,8 @@ elm_public_eolian_files = \
lib/elementary/efl_ui_caching_factory.eo \
lib/elementary/efl_ui_widget_factory.eo \
lib/elementary/efl_ui_relative_layout.eo \
lib/elementary/efl_ui_clickable.eo \
lib/elementary/efl_ui_clickable_util.eo \
$(NULL)
# More public files -- FIXME
@ -1211,6 +1213,8 @@ lib_elementary_libelementary_la_SOURCES = \
lib/elementary/efl_ui_exact_model.c \
lib/elementary/efl_ui_average_model.c \
lib/elementary/efl_ui_relative_layout.c \
lib/elementary/efl_ui_clickable.c \
lib/elementary/efl_ui_clickable_util.c \
$(NULL)

View File

@ -104,7 +104,6 @@ typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command;
#include "interfaces/efl_ui_range_interactive.eo.h"
#include "interfaces/efl_ui_autorepeat.eo.h"
#include "interfaces/efl_ui_draggable.eo.h"
#include "interfaces/efl_ui_clickable.eo.h"
#include "interfaces/efl_ui_scrollable.eo.h"
#include "interfaces/efl_ui_scrollbar.eo.h"
#include "interfaces/efl_ui_scrollable_interactive.eo.h"

View File

@ -72,7 +72,6 @@
#include "interfaces/efl_ui_factory_bind.eo.c"
#include "interfaces/efl_ui_draggable.eo.c"
#include "interfaces/efl_ui_clickable.eo.c"
#include "interfaces/efl_ui_scrollable.eo.c"
#include "interfaces/efl_ui_scrollable_interactive.eo.c"
#include "interfaces/efl_ui_scrollbar.eo.c"

View File

@ -1,18 +0,0 @@
interface @beta Efl.Ui.Clickable
{
[[Efl UI clickable interface]]
event_prefix: efl_ui;
events {
/* FIXME: Explain what are the objects passed through the event_infos */
clicked: void; [[Called when object is clicked]]
clicked,double: void; [[Called when object receives a double click]]
clicked,triple: void; [[Called when object receives a triple click]]
clicked,right: Efl.Object; [[Called when object receives a right click]]
/* FIXME: Might be NULL */
pressed: Efl.Object; [[Called when the object is pressed]]
/* FIXME: Might be NULL */
unpressed: Efl.Object; [[Called when the object is no longer pressed]]
/* FIXME: Might be NULL */
longpressed: Efl.Object; [[Called when the object receives a long press]]
}
}

View File

@ -8,7 +8,6 @@ pub_legacy_eo_files = [
'efl_gfx_frame_controller.eo',
'efl_input_device.eo',
'efl_ui_draggable.eo',
'efl_ui_clickable.eo',
'efl_ui_scrollable.eo',
'efl_ui_scrollable_interactive.eo',
'efl_ui_scrollbar.eo',

View File

@ -235,6 +235,8 @@ EAPI void efl_ui_focus_relation_free(Efl_Ui_Focus_Relations *rel);
# include <efl_ui_navigation_bar_part_back_button.eo.h>
# include <efl_ui_navigation_layout.eo.h>
# include <efl_ui_stack.eo.h>
# include <efl_ui_clickable.eo.h>
# include <efl_ui_clickable_util.eo.h>
/**
* Initialize Elementary

View File

@ -171,6 +171,7 @@ typedef Eo Efl_Ui_Focus_Manager;
#ifdef EFL_BETA_API_SUPPORT
# include <elm_interface_scrollable.h>
# include <elm_interface_scrollable.eo.h>
#include <efl_ui_clickable.eo.h>
#endif
#include <elm_tooltip.h>

View File

@ -0,0 +1,120 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#define EFL_UI_CLICKABLE_PROTECTED 1
#include <Efl_Ui.h>
#include "elm_priv.h"
typedef struct {
Eina_Bool pressed;
int pressed_before;
Efl_Loop_Timer *timer;
double clicked_last_time;
} Button_State;
typedef struct {
Button_State state[3];
} Efl_Ui_Clickable_Data;
#define MY_CLASS EFL_UI_CLICKABLE_MIXIN
#define DOUBLE_CLICK_TIME ((double)0.1) //in seconds
#define LONGPRESS_TIMEOUT ((double)1.0) //in seconds
static void
_timer_longpress(void *data, const Efl_Event *ev)
{
Button_State *state;
Efl_Ui_Clickable_Data *pd = efl_data_scope_get(data, MY_CLASS);
for (int i = 0; i < 3; ++i)
{
state = &pd->state[i];
if (state->timer == ev->object)
{
efl_del(state->timer);
state->timer = NULL;
efl_event_callback_call(data, EFL_UI_EVENT_LONGPRESSED, &i);
}
}
}
EOLIAN static void
_efl_ui_clickable_press(Eo *obj EINA_UNUSED, Efl_Ui_Clickable_Data *pd, unsigned int button)
{
Button_State *state;
EINA_SAFETY_ON_FALSE_RETURN(button < 3);
INF("Widget %s,%p is pressed(%d)", efl_class_name_get(obj), obj, button);
state = &pd->state[button];
EINA_SAFETY_ON_NULL_RETURN(state);
state->pressed = EINA_TRUE;
if (state->timer) efl_del(state->timer);
state->timer = efl_add(EFL_LOOP_TIMER_CLASS, obj,
efl_loop_timer_interval_set(efl_added, LONGPRESS_TIMEOUT),
efl_event_callback_add(efl_added, EFL_LOOP_TIMER_EVENT_TIMER_TICK, _timer_longpress, obj));
efl_event_callback_call(obj, EFL_UI_EVENT_PRESSED, &button);
}
EOLIAN static void
_efl_ui_clickable_unpress(Eo *obj EINA_UNUSED, Efl_Ui_Clickable_Data *pd, unsigned int button)
{
Efl_Ui_Clickable_Clicked clicked;
Button_State *state;
Eina_Bool pressed;
EINA_SAFETY_ON_FALSE_RETURN(button < 3);
state = &pd->state[button];
EINA_SAFETY_ON_NULL_RETURN(state);
INF("Widget %s,%p is unpressed(%d):%d", efl_class_name_get(obj), obj, button, state->pressed);
//eval if this is a repeated click
if (state->clicked_last_time > 0.0 && ecore_time_unix_get() - state->clicked_last_time < DOUBLE_CLICK_TIME)
state->pressed_before++;
else
state->pressed_before = 0;
//reset state
state->clicked_last_time = ecore_time_unix_get();
pressed = state->pressed;
state->pressed = EINA_FALSE;
if (state->timer)
efl_del(state->timer);
state->timer = NULL;
//populate state
efl_event_callback_call(obj, EFL_UI_EVENT_UNPRESSED, &button);
if (pressed)
{
INF("Widget %s,%p is clicked(%d)", efl_class_name_get(obj), obj, button);
clicked.repeated = state->pressed_before;
clicked.button = button;
if (button == 1)
efl_event_callback_call(obj, EFL_UI_EVENT_CLICKED, &clicked);
efl_event_callback_call(obj, EFL_UI_EVENT_CLICKED_ANY, &clicked);
}
}
EOLIAN static void
_efl_ui_clickable_button_state_reset(Eo *obj EINA_UNUSED, Efl_Ui_Clickable_Data *pd, unsigned int button)
{
Button_State *state;
EINA_SAFETY_ON_FALSE_RETURN(button < 3);
state = &pd->state[button];
EINA_SAFETY_ON_NULL_RETURN(state);
INF("Widget %s,%p is press is aborted(%d):%d", efl_class_name_get(obj), obj, button, state->pressed);
if (state->timer)
efl_del(state->timer);
state->timer = NULL;
state->pressed = EINA_FALSE;
}
#include "efl_ui_clickable.eo.c"

View File

@ -0,0 +1,47 @@
struct Efl.Ui.Clickable_Clicked {
[[A struct that expresses a click in elementary.]]
repeated : int; [[The amount of how often the clicked event was repeated in a certain amount of time]]
button : int; [[The Button that is pressed]]
}
mixin @beta Efl.Ui.Clickable
{
[[Efl UI clickable interface]]
event_prefix: efl_ui;
methods {
press @protected {
[[Change internal states that a button got pressed.
When the button is already pressed, this is silently ignored.
]]
params {
button : uint; [[The number of the button. FIXME ensure to have the right interval of possible input]]
}
}
unpress @protected {
[[Change internal states that a button got unpressed.
When the button is not pressed, this is silently ignored.
]]
params {
button : uint; [[The number of the button. FIXME ensure to have the right interval of possible input]]
}
}
button_state_reset @protected {
[[This aborts the internal state after a press call.
This will stop the timer for longpress. And set the state of the clickable mixin back into the unpressed state.
]]
params {
button : uint;
}
}
}
events {
clicked: Efl.Ui.Clickable_Clicked; [[Called when object is in sequence pressed and unpressed, by the primary button]]
clicked,any : Efl.Ui.Clickable_Clicked; [[Called when object is in sequence pressed and unpressed by any button. The button that triggered the event can be found in the event information.]]
pressed: int; [[Called when the object is pressed, event_info is the button that got pressed]]
unpressed: int; [[Called when the object is no longer pressed, event_info is the button that got pressed]]
longpressed: int; [[Called when the object receives a long press, event_info is the button that got pressed]]
}
}

View File

@ -0,0 +1,99 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#define EFL_UI_CLICKABLE_PROTECTED 1
#include <Efl_Ui.h>
#include "elm_priv.h"
typedef struct {
} Efl_Ui_Clickable_Util_Data;
static void
_on_press_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
efl_ui_clickable_press(data, 1);
}
static void
_on_unpress_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
efl_ui_clickable_unpress(data, 1);
}
static void
_on_mouse_out(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
efl_ui_clickable_button_state_reset(data, 1);
}
EOLIAN static void
_efl_ui_clickable_util_bind_to_theme(Efl_Canvas_Layout *object, Efl_Ui_Clickable *clickable)
{
efl_layout_signal_callback_add(object, "efl,action,press", "*", clickable, _on_press_cb, NULL);
efl_layout_signal_callback_add(object, "efl,action,unpress", "*", clickable, _on_unpress_cb, NULL);
efl_layout_signal_callback_add(object, "efl,action,mouse_out", "*", clickable, _on_mouse_out, NULL);
}
static void
_press_cb(void *data, const Efl_Event *ev)
{
Efl_Input_Pointer *pointer = ev->info;
if (!efl_input_processed_get(pointer))
{
efl_ui_clickable_press(data, 1);
efl_input_processed_set(pointer, EINA_TRUE);
}
}
static void
_unpress_cb(void *data, const Efl_Event *ev EINA_UNUSED)
{
Efl_Input_Pointer *pointer = ev->info;
Eina_Position2D mouse_pos = efl_input_pointer_position_get(pointer);
Eina_Rect geom = efl_gfx_entity_geometry_get(data);
if (efl_input_processed_get(pointer))
{
efl_ui_clickable_button_state_reset(data, 1);
}
else if (!eina_rectangle_coords_inside(&geom.rect, mouse_pos.x, mouse_pos.y))
{
//we are emulating edje behavior here, do press unpress on the event, but not click
efl_ui_clickable_button_state_reset(data, 1);
if (efl_canvas_object_pointer_mode_get(data) == EFL_INPUT_OBJECT_POINTER_MODE_AUTO_GRAB)
{
efl_ui_clickable_unpress(data, 1);
efl_input_processed_set(pointer, EINA_TRUE);
}
}
else
{
efl_ui_clickable_unpress(data, 1);
efl_input_processed_set(pointer, EINA_TRUE);
}
}
EFL_CALLBACKS_ARRAY_DEFINE(bind_to_theme_callbacks,
{EFL_EVENT_POINTER_DOWN, _press_cb},
{EFL_EVENT_POINTER_UP, _unpress_cb},
)
EOLIAN static void
_efl_ui_clickable_util_bind_to_object(Efl_Input_Interface *object, Efl_Ui_Clickable *clickable)
{
efl_event_callback_array_add(object, bind_to_theme_callbacks(), clickable);
}
#include "efl_ui_clickable_util.eo.c"

View File

@ -0,0 +1,24 @@
class @beta Efl.Ui.Clickable_Util {
methods {
bind_to_theme @class {
[[This will listen to the standard events of a theme, and emit the events on clickable
This means, widgets themselfs do not neccessarily need to listen to the theme signals. This function does this, and calls the correct clickable functions.
]]
params {
object : Efl.Canvas.Layout; [[The object to listen on]]
clickable : Efl.Ui.Clickable; [[The object to call the clickable events on]]
}
}
bind_to_object @class {
[[This will listen to the standard events on a object, and call the correct methods on clickable
This means, widgets themselfs do not neccessarily need to listen to the events on the object. This function does this, and calls the correct clickable functions.
]]
params {
object : Efl.Input.Interface; [[The object to listen on]]
clickable : Efl.Ui.Clickable; [[The object to call the clickable events on]]
}
}
}
}

View File

@ -861,7 +861,12 @@ _mouse_down_cb(void *data,
if (elm_widget_is_legacy(data))
evas_object_smart_callback_call(data, "clicked,double", NULL);
else
efl_event_callback_call(data, EFL_UI_EVENT_CLICKED_DOUBLE, NULL);
{
Efl_Ui_Clickable_Clicked clicked;
clicked.repeated = 1;
clicked.button = 1;
efl_event_callback_call(data, EFL_UI_EVENT_CLICKED, &clicked);
}
}
else
efl_event_callback_legacy_call(data, EFL_UI_IMAGE_ZOOMABLE_EVENT_PRESS, NULL);

View File

@ -50,6 +50,6 @@ static const Efl_Class_Description _elm_bubble_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_bubble_class_get, &_elm_bubble_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_bubble_class_get, &_elm_bubble_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_bubble_eo.legacy.c"

View File

@ -146,6 +146,6 @@ static const Efl_Class_Description _elm_colorselector_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_colorselector_class_get, &_elm_colorselector_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_colorselector_class_get, &_elm_colorselector_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_colorselector_eo.legacy.c"

View File

@ -222,6 +222,6 @@ static const Efl_Class_Description _elm_diskselector_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_diskselector_class_get, &_elm_diskselector_class_desc, EFL_UI_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SCROLLABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_diskselector_class_get, &_elm_diskselector_class_desc, EFL_UI_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SCROLLABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_diskselector_eo.legacy.c"

View File

@ -1188,6 +1188,6 @@ static const Efl_Class_Description _elm_entry_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_entry_class_get, &_elm_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_TEXT_INTERFACE, EFL_ACCESS_EDITABLE_TEXT_INTERFACE, EFL_FILE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_SCROLLABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_entry_class_get, &_elm_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_TEXT_INTERFACE, EFL_ACCESS_EDITABLE_TEXT_INTERFACE, EFL_FILE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_SCROLLABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_entry_eo.legacy.c"

View File

@ -88,4 +88,4 @@ static const Efl_Class_Description _elm_fileselector_entry_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_fileselector_entry_class_get, &_elm_fileselector_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_fileselector_entry_class_get, &_elm_fileselector_entry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);

View File

@ -202,6 +202,6 @@ static const Efl_Class_Description _elm_fileselector_class_desc = {
_elm_fileselector_class_destructor
};
EFL_DEFINE_CLASS(elm_fileselector_class_get, &_elm_fileselector_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_fileselector_class_get, &_elm_fileselector_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_FILESELECTOR_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_FOCUS_COMPOSITION_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_fileselector_eo.legacy.c"

View File

@ -512,6 +512,6 @@ static const Efl_Class_Description _elm_gengrid_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_gengrid_class_get, &_elm_gengrid_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_gengrid_class_get, &_elm_gengrid_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
#include "elm_gengrid_eo.legacy.c"

View File

@ -681,6 +681,6 @@ static const Efl_Class_Description _elm_genlist_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_genlist_class_get, &_elm_genlist_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_genlist_class_get, &_elm_genlist_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
#include "elm_genlist_eo.legacy.c"

View File

@ -92,6 +92,6 @@ static const Efl_Class_Description _elm_hover_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_hover_class_get, &_elm_hover_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_hover_class_get, &_elm_hover_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_FOCUS_LAYER_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_hover_eo.legacy.c"

View File

@ -189,6 +189,6 @@ static const Efl_Class_Description _elm_hoversel_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_hoversel_class_get, &_elm_hoversel_class_desc, EFL_UI_BUTTON_LEGACY_CLASS, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_hoversel_class_get, &_elm_hoversel_class_desc, EFL_UI_BUTTON_LEGACY_CLASS, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_hoversel_eo.legacy.c"

View File

@ -322,6 +322,6 @@ static const Efl_Class_Description _elm_index_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_index_class_get, &_elm_index_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_DIRECTION_INTERFACE, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_index_class_get, &_elm_index_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_DIRECTION_INTERFACE, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_index_eo.legacy.c"

View File

@ -363,6 +363,6 @@ static const Efl_Class_Description _elm_list_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_list_class_get, &_elm_list_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_ACCESS_OBJECT_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_list_class_get, &_elm_list_class_desc, EFL_UI_LAYOUT_BASE_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_ACCESS_OBJECT_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
#include "elm_list_eo.legacy.c"

View File

@ -360,6 +360,6 @@ static const Efl_Class_Description _elm_map_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_map_class_get, &_elm_map_class_desc, EFL_UI_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, EFL_UI_ZOOM_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_map_class_get, &_elm_map_class_desc, EFL_UI_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, EFL_UI_ZOOM_INTERFACE, NULL);
#include "elm_map_eo.legacy.c"

View File

@ -119,6 +119,6 @@ static const Efl_Class_Description _elm_menu_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_menu_class_get, &_elm_menu_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_CLICKABLE_INTERFACE, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_WIDGET_FOCUS_MANAGER_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_menu_class_get, &_elm_menu_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_CLICKABLE_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_UI_WIDGET_FOCUS_MANAGER_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_menu_eo.legacy.c"

View File

@ -219,6 +219,6 @@ static const Efl_Class_Description _elm_multibuttonentry_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_multibuttonentry_class_get, &_elm_multibuttonentry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_multibuttonentry_class_get, &_elm_multibuttonentry_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_multibuttonentry_eo.legacy.c"

View File

@ -76,4 +76,4 @@ static const Efl_Class_Description _elm_photo_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_photo_class_get, &_elm_photo_class_desc, EFL_UI_WIDGET_CLASS, EFL_FILE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_DRAGGABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_photo_class_get, &_elm_photo_class_desc, EFL_UI_WIDGET_CLASS, EFL_FILE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_DRAGGABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);

View File

@ -54,6 +54,6 @@ static const Efl_Class_Description _elm_plug_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_plug_class_get, &_elm_plug_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_plug_class_get, &_elm_plug_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_CLICKABLE_MIXIN, EFL_UI_LEGACY_INTERFACE, NULL);
#include "elm_plug_eo.legacy.c"

View File

@ -82,4 +82,4 @@ static const Efl_Class_Description _elm_thumb_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_thumb_class_get, &_elm_thumb_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_FILE_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_DRAGGABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_thumb_class_get, &_elm_thumb_class_desc, EFL_UI_LAYOUT_BASE_CLASS, EFL_FILE_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_DRAGGABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, NULL);

View File

@ -372,6 +372,6 @@ static const Efl_Class_Description _elm_toolbar_class_desc = {
NULL
};
EFL_DEFINE_CLASS(elm_toolbar_class_get, &_elm_toolbar_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_DIRECTION_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_ACCESS_OBJECT_MIXIN, EFL_UI_CLICKABLE_INTERFACE, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
EFL_DEFINE_CLASS(elm_toolbar_class_get, &_elm_toolbar_class_desc, EFL_UI_WIDGET_CLASS, EFL_UI_FOCUS_COMPOSITION_MIXIN, ELM_INTERFACE_SCROLLABLE_MIXIN, EFL_UI_DIRECTION_INTERFACE, EFL_ACCESS_WIDGET_ACTION_MIXIN, EFL_ACCESS_SELECTION_INTERFACE, EFL_ACCESS_OBJECT_MIXIN, EFL_UI_CLICKABLE_MIXIN, EFL_UI_SELECTABLE_INTERFACE, EFL_UI_LEGACY_INTERFACE, ELM_WIDGET_ITEM_CONTAINER_INTERFACE, NULL);
#include "elm_toolbar_eo.legacy.c"

View File

@ -175,6 +175,8 @@ pub_eo_files = [
'efl_ui_caching_factory.eo',
'efl_ui_widget_factory.eo',
'efl_ui_relative_layout.eo',
'efl_ui_clickable.eo',
'efl_ui_clickable_util.eo',
]
foreach eo_file : pub_eo_files
@ -931,7 +933,9 @@ elementary_src = [
'efl_ui_homogeneous_model.c',
'efl_ui_exact_model.c',
'efl_ui_average_model.c',
'efl_ui_relative_layout.c'
'efl_ui_relative_layout.c',
'efl_ui_clickable.c',
'efl_ui_clickable_util.c',
]
elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, efreet_mime, efreet_trash, eio, atspi, dl, intl]