diff --git a/src/Makefile_Efl_Mono.am b/src/Makefile_Efl_Mono.am
index 54f950d253..eb908f8e31 100644
--- a/src/Makefile_Efl_Mono.am
+++ b/src/Makefile_Efl_Mono.am
@@ -1,502 +1,502 @@
efl_custom_exports_mono_files = \
lib/efl_mono/efl_custom_exports_mono.c
efl_eo_mono_files = \
bindings/mono/eo_mono/iwrapper.cs \
bindings/mono/eo_mono/FunctionWrapper.cs \
bindings/mono/eo_mono/NativeModule.cs \
bindings/mono/eo_mono/workaround.cs
if HAVE_WIN32
efl_eo_mono_files += \
bindings/mono/eo_mono/FunctionWrapper_Windows.cs \
bindings/mono/eo_mono/NativeModule_Windows.cs
else
efl_eo_mono_files += \
bindings/mono/eo_mono/FunctionWrapper_Unix.cs \
bindings/mono/eo_mono/NativeModule_Unix.cs
endif
efl_eina_mono_files = \
bindings/mono/eina_mono/eina_config.cs \
bindings/mono/eina_mono/eina_array.cs \
bindings/mono/eina_mono/eina_hash.cs \
bindings/mono/eina_mono/eina_list.cs \
bindings/mono/eina_mono/eina_inarray.cs \
bindings/mono/eina_mono/eina_inlist.cs \
bindings/mono/eina_mono/eina_iterator.cs \
bindings/mono/eina_mono/eina_container_common.cs \
bindings/mono/eina_mono/eina_common.cs \
bindings/mono/eina_mono/eina_log.cs \
bindings/mono/eina_mono/eina_binbuf.cs \
bindings/mono/eina_mono/eina_slice.cs \
bindings/mono/eina_mono/eina_stringshare.cs \
bindings/mono/eina_mono/eina_error.cs \
bindings/mono/eina_mono/eina_value.cs \
bindings/mono/eina_mono/eina_promises.cs \
bindings/mono/eina_mono/eina_accessor.cs \
bindings/mono/eina_mono/eina_strbuf.cs
efl_eldbus_mono_files = \
bindings/mono/eldbus_mono/eldbus_common.cs \
bindings/mono/eldbus_mono/eldbus_config.cs \
bindings/mono/eldbus_mono/eldbus_connection.cs \
bindings/mono/eldbus_mono/eldbus_message.cs \
bindings/mono/eldbus_mono/eldbus_object.cs \
bindings/mono/eldbus_mono/eldbus_pending.cs \
bindings/mono/eldbus_mono/eldbus_proxy.cs \
bindings/mono/eldbus_mono/eldbus_service.cs
# Static C# source files don't go into a _SOURCES var as the dll target
# is custom built instead of through _LTLIBRARIES/_LIBRARIES
lib_efl_mono_libefl_mono_dll_sources = \
bindings/mono/efl_mono/efl_all.cs \
bindings/mono/efl_mono/efl_csharp_application.cs \
$(efl_eo_mono_files) \
$(efl_eina_mono_files) \
$(efl_eldbus_mono_files)
efl_mono_test_files = \
tests/efl_mono/dummy_test_object.eo \
tests/efl_mono/dummy_test_iface.eo \
tests/efl_mono/dummy_another_iface.eo \
tests/efl_mono/dummy_child.eo \
tests/efl_mono/dummy_numberwrapper.eo \
tests/efl_mono/mono_test_driver.sh
EXTRA_DIST2 += \
$(lib_efl_mono_libefl_mono_dll_sources) \
$(efl_mono_test_files) \
bindings/mono/efl_mono/efl_libs.cs.in \
bindings/mono/efl_mono/efl_libs.csv.in
if HAVE_CSHARP
bin_PROGRAMS += bin/eolian_mono/eolian_mono
bin_eolian_mono_eolian_mono_SOURCES = \
bin/eolian_mono/eolian_mono.cc \
bin/eolian_mono/eolian/mono/documentation.hh \
bin/eolian_mono/eolian/mono/type.hh \
bin/eolian_mono/eolian/mono/marshall_annotation.hh \
bin/eolian_mono/eolian/mono/async_function_definition.hh \
bin/eolian_mono/eolian/mono/function_pointer.hh \
bin/eolian_mono/eolian/mono/function_definition.hh \
bin/eolian_mono/eolian/mono/name_helpers.hh \
bin/eolian_mono/eolian/mono/function_declaration.hh \
bin/eolian_mono/eolian/mono/helpers.hh \
bin/eolian_mono/eolian/mono/function_helpers.hh \
bin/eolian_mono/eolian/mono/marshall_type_impl.hh \
bin/eolian_mono/eolian/mono/function_registration.hh \
bin/eolian_mono/eolian/mono/enum_definition.hh \
bin/eolian_mono/eolian/mono/struct_definition.hh \
bin/eolian_mono/eolian/mono/part_definition.hh \
bin/eolian_mono/eolian/mono/struct_fields.hh \
bin/eolian_mono/eolian/mono/parameter.hh \
bin/eolian_mono/eolian/mono/variable_definition.hh \
bin/eolian_mono/eolian/mono/utils.hh \
bin/eolian_mono/eolian/mono/using_decl.hh \
bin/eolian_mono/eolian/mono/marshall_type.hh \
bin/eolian_mono/eolian/mono/klass.hh \
bin/eolian_mono/eolian/mono/type_impl.hh \
bin/eolian_mono/eolian/mono/events.hh \
bin/eolian_mono/eolian/mono/generation_contexts.hh
bin_eolian_mono_eolian_mono_CXXFLAGS = -I$(top_builddir)/src/lib/efl \
-I$(top_srcdir)/src/lib/eolian_cxx/ \
-I$(top_srcdir)/src/bin/eolian_mono/ \
@CHECK_CFLAGS@ @EINA_CFLAGS@ @EINA_CXX_CFLAGS@ @EO_CXX_CFLAGS@ @ECORE_CXX_CFLAGS@ @EO_CFLAGS@ \
-I$(top_srcdir)/src/bindings/cxx/eina_cxx \
@EOLIAN_CXX_CFLAGS@ @EOLIAN_CFLAGS@
bin_eolian_mono_eolian_mono_LDADD = @CHECK_LIBS@ @USE_EOLIAN_LIBS@
bin_eolian_mono_eolian_mono_DEPENDENCIES = @USE_EOLIAN_INTERNAL_LIBS@
# Helper for other modules using Eolian_Mono, include only after Makefile_Eolian_Helper.am
include Makefile_Eolian_Mono_Helper.am
### Efl C Sharp Binding
evas_eolian_blacklisted_files = \
lib/evas/canvas/efl_canvas_text.eo.cs \
lib/evas/canvas/efl_canvas_scene3d.eo.cs \
lib/evas/canvas/evas_canvas3d_camera.eo.cs \
lib/evas/canvas/evas_canvas3d_light.eo.cs \
lib/evas/canvas/evas_canvas3d_material.eo.cs \
lib/evas/canvas/evas_canvas3d_mesh.eo.cs \
lib/evas/canvas/evas_canvas3d_node.eo.cs \
lib/evas/canvas/evas_canvas3d_object.eo.cs \
lib/evas/canvas/evas_canvas3d_primitive.eo.cs \
lib/evas/canvas/evas_canvas3d_scene.eo.cs \
lib/evas/canvas/evas_canvas3d_texture.eo.cs \
lib/evas/canvas/efl_canvas_vg_object.eo.cs \
lib/evas/canvas/efl_vg.eo.cs \
lib/evas/canvas/efl_vg_container.eo.cs \
lib/evas/canvas/efl_vg_gradient.eo.cs \
lib/evas/canvas/efl_vg_gradient_radial.eo.cs \
lib/evas/canvas/efl_vg_gradient_linear.eo.cs \
lib/evas/canvas/efl_vg_root_node.eo.cs \
lib/evas/canvas/efl_vg_shape.eo.cs
efl_eolian_blacklisted_files = \
lib/efl/interfaces/efl_io_buffer.eo.cs \
lib/efl/interfaces/efl_io_positioner.eo.cs \
lib/efl/interfaces/efl_io_queue.eo.cs \
lib/efl/interfaces/efl_io_sizer.eo.cs
ecore_eolian_blacklisted_files = \
lib/ecore/efl_io_closer_fd.eo.cs \
lib/ecore/efl_io_buffered_stream.eo.cs \
lib/ecore/efl_io_positioner_fd.eo.cs \
lib/ecore/efl_io_reader_fd.eo.cs \
lib/ecore/efl_io_writer_fd.eo.cs \
lib/ecore/efl_io_copier_fd.eo.cs \
lib/ecore/efl_io_sizer_fd.eo.cs \
lib/ecore/efl_io_stdin.eo.cs \
lib/ecore/efl_io_stdout.eo.cs \
lib/ecore/efl_io_stderr.eo.cs \
lib/ecore/efl_io_file.eo.cs \
lib/ecore/efl_io_copier.eo.cs
eo_eolian_blacklisted_files = \
lib/eo/efl_object_override.eo.cs
elementary_eolian_blacklisted_files = \
lib/elementary/elm_web.eo.cs \
lib/elementary/elm_map.eo.cs \
lib/elementary/elm_combobox.eo.cs \
-lib/elementary/elm_list.eo.cs \
+lib/elementary/elm_list_eo.cs \
lib/elementary/elm_genlist_eo.cs \
lib/elementary/elm_view_list.eo.cs \
lib/elementary/elm_genlist_item_eo.cs \
lib/elementary/elm_gengrid_eo.cs \
lib/elementary/elm_glview_eo.cs
efl_mono_blacklisted_files = \
$(evas_eolian_blacklisted_files) \
$(efl_eolian_blacklisted_files) \
$(ecore_eolian_blacklisted_files) \
$(eo_eolian_blacklisted_files) \
$(elementary_eolian_blacklisted_files)
efl_eolian_mono_files = \
$(filter-out $(eo_eolian_blacklisted_files),$(eo_eolian_files:%.eo=%.eo.cs)) \
$(filter-out $(ecore_eolian_blacklisted_files),$(ecore_eolian_files_public:%.eo=%.eo.cs)) \
$(ecore_eolian_type_files:%.eot=%.eot.cs) \
$(filter-out $(efl_eolian_blacklisted_files),$(efl_eolian_files:%.eo=%.eo.cs)) \
$(filter-out $(edje_eolian_blacklisted_files),$(edje_eolian_files:%.eo=%.eo.cs)) \
$(filter-out $(elementary_eolian_blacklisted_files),$(elm_public_eolian_files:%.eo=%.eo.cs)) \
$(efl_eolian_type_files:%.eot=%.eot.cs) \
$(edje_eolian_type_files:%.eot=%.eot.cs) \
$(elm_eolian_type_files:%.eot=%.eot.cs) \
$(filter-out $(evas_eolian_blacklisted_files),$(evas_canvas_eolian_pub_files:%.eo=%.eo.cs)) \
lib/evas/canvas/efl_canvas_image.eo.cs \
$(evas_canvas_eolian_type_files:%.eot=%.eot.cs) \
lib/eo/eina_types.eot.cs \
lib/ecore/efl_loop_timer.eo.cs
efl_mono_files_gen =\
$(efl_eolian_mono_files) \
$(builddir)/bindings/mono/efl_mono/efl_libs.cs
installed_eflmonomainheadersdir = $(includedir)/efl-mono-@VMAJ@/
nodist_installed_eflmonomainheaders_DATA = $(efl_eolian_files:%.eo=%.eo.cs) $(builddir)/bindings/mono/efl_mono/efl_libs.csv
CLEANFILES += $(efl_mono_files_gen) $(efl_mono_blacklisted_files) \
$(builddir)/lib/efl_mono/libefl_mono.dll \
$(builddir)/lib/efl_mono/libefl_mono.xml \
$(builddir)/lib/efl_mono/libefl_mono.dll.config
if HAVE_WIN32
MCSFLAGS ?=
MCSFLAGS += -define:WIN32
endif
# Efl Custom Exports Mono auxiliary library
lib_LTLIBRARIES += \
lib/efl_mono/libeflcustomexportsmono.la
lib_efl_mono_libeflcustomexportsmono_la_SOURCES = \
$(efl_custom_exports_mono_files)
lib_efl_mono_libeflcustomexportsmono_la_CPPFLAGS = \
-DEFL_BETA_API_SUPPORT \
-I$(top_builddir)/src/lib/efl \
@EFL_CUSTOM_EXPORTS_MONO_CFLAGS@
lib_efl_mono_libeflcustomexportsmono_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
lib_efl_mono_libeflcustomexportsmono_la_LIBADD = @EFL_CUSTOM_EXPORTS_MONO_LIBS@
lib_efl_mono_libeflcustomexportsmono_la_DEPENDENCIES = @EFL_CUSTOM_EXPORTS_MONO_INTERNAL_LIBS@
#Efl Mono - C Sharp binding library
libefl_mono_dll_MCSFLAGS = -doc:lib/efl_mono/libefl_mono.xml
lib/efl_mono/libefl_mono.dll: $(efl_mono_files_dist) lib/efl_mono/$(am__dirstamp) $(lib_efl_mono_libefl_mono_dll_sources) $(efl_mono_files_gen) lib/efl_mono/libefl_mono.dll.config
@rm -f lib/efl_mono/libefl_mono.dll
$(AM_V_MCS) $(MCS) $(MCSFLAGS) $(libefl_mono_dll_MCSFLAGS) -out:$@ -t:library $(filter %.cs, $(^))
lib/efl_mono/libefl_mono.dll.config:
echo "" > $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo "" >> $@
EFL_INSTALL_EXEC_HOOK += \
$(MKDIR_P) @eflmonodlldir@; \
cp -f $(builddir)/lib/efl_mono/libefl_mono.dll @eflmonodlldir@/libefl_mono.dll; \
cp -f $(builddir)/lib/efl_mono/libefl_mono.xml @eflmonodlldir@/libefl_mono.xml; \
$(MKDIR_P) $(DESTDIR)$(datadir)/efl_mono; \
cp -f $(builddir)/bindings/mono/efl_mono/efl_libs.csv $(DESTDIR)$(datadir)/efl_mono/efl_libs.csv;
all-local: lib/efl_mono/libefl_mono.dll
uninstall-local:
rm -rf @eflmonodlldir@/libefl_mono.dll
rm -rf @eflmonodlldir@/libefl_mono.xml
rm -rf $(DESTDIR)$(datadir)/efl_mono
rm -rf src/tests/efl_mono
### MSBuild
bin_PROGRAMS += bin/efl_mono_msbuild_gen/efl_mono_msbuild_gen
bin_efl_mono_msbuild_gen_efl_mono_msbuild_gen_SOURCES = \
bin/efl_mono_msbuild_gen/main.cc
bin_efl_mono_msbuild_gen_efl_mono_msbuild_gen_CXXFLAGS = \
-I$(top_srcdir)/src/lib/efl \
-I$(top_builddir)/src/lib/efl \
-I$(top_srcdir)/src/lib/eolian_cxx/ \
-I$(top_srcdir)/src/bindings/cxx/eina_cxx \
@EINA_CFLAGS@ @EINA_CXX_CFLAGS@ @EO_CXX_CFLAGS@ \
@ECORE_CXX_CFLAGS@ @EO_CFLAGS@ @EOLIAN_CXX_CFLAGS@ @EOLIAN_CFLAGS@
bin_efl_mono_msbuild_gen_efl_mono_msbuild_gen_LDADD = @CHECK_LIBS@ @USE_EOLIAN_LIBS@
bin_efl_mono_msbuild_gen_efl_mono_msbuild_gen_DEPENDENCIES = @USE_EOLIAN_INTERNAL_LIBS@
# Helper for other modules using Efl_Mono_MSBuild_Gen
include Makefile_Efl_Mono_MSBuild_Gen_Helper.am
# Efl Mono DLL for MSBuild
../libefl_mono.csproj: $(efl_mono_files_dist) lib/efl_mono/$(am__dirstamp) $(efl_mono_files_gen) $(_EFL_MONO_MSBUILD_GEN_DEP)
@rm -f $@
$(EFL_MONO_MSBUILD_GEN) $(MSBUILD_GEN_FLAGS) -o $@ -a libefl_mono.dll -t library $(patsubst %.cs,src/%.cs,$(filter %.cs, $(^)))
CSPROJS_SUBDIRS = \
examples/eina \
examples/efl_mono
msbuildcsprojs: ../libefl_mono.csproj
@for d in $(CSPROJS_SUBDIRS); do \
echo "Making MSBuild C Sharp projects in $$d"; \
$(MAKE) $(AM_MAKEFLAGS) -C $$d msbuildcsprojs || exit 1; \
done
### Some hard-coded runtime dependencies for tests and examples
TEST_PATHS = $(abs_top_builddir)/src/lib/efl_mono:$(abs_top_builddir)/src/lib/efl_mono/.libs:$(abs_top_builddir)/src/lib/eina/.libs:$(abs_top_builddir)/src/lib/ecore/.libs:$(abs_top_builddir)/src/lib/ecore_evas/.libs:$(abs_top_builddir)/src/lib/eo/.libs:$(abs_top_builddir)/src/lib/evas/.libs:$(abs_top_builddir)/src/lib/emile/.libs:$(abs_top_builddir)/src/lib/eet/.libs:$(abs_top_builddir)/src/lib/efl/.libs:$(abs_top_builddir)/src/ecore-file/.libs:$(abs_top_builddir)/src/lib/efl-input/.libs:$(abs_top_builddir)/src/lib/edje/.libs:$(abs_top_builddir)/src/lib/ethumb/.libs:$(abs_top_builddir)/src/lib/ethumb-client/.libs:$(abs_top_builddir)/src/lib/emotion/.libs:$(abs_top_builddir)/src/lib/ecore-imf/.libs:$(abs_top_builddir)/src/lib/ecore-con/.libs:$(abs_top_builddir)/src/lib/eldbus/.libs:$(abs_top_builddir)/src/lib/efreet/.libs:$(abs_top_builddir)/src/lib/efreet-mime/.libs:$(abs_top_builddir)/src/lib/efreet-trash/.libs:$(abs_top_builddir)/src/lib/eio/.libs:$(abs_top_builddir)/src/lib/elocation/.libs:$(abs_top_builddir)/src/lib/elementary/.libs:$(abs_top_builddir)/src/tests/efl_mono/.libs
WIN_ADD_TEST_PATHS = $(abs_top_builddir)/src/lib/evil/.libs:$(abs_top_builddir)/src/lib/ecore_win32/.libs:$(abs_top_builddir)/src/lib/ector/.libs:$(abs_top_builddir)/src/lib/ecore_con/.libs:$(abs_top_builddir)/src/lib/ecore_imf/.libs:$(abs_top_builddir)/src/lib/ecore_file/.libs:$(abs_top_builddir)/src/lib/ecore_input/.libs:$(abs_top_builddir)/src/ethumb_client/.libs:$(abs_top_builddir)/src/tests/efl_mono/.libs
### Rules for generating the .cs files
ALL_EO_REFS = -r $(top_builddir)/src/bindings/mono/efl_mono/efl_libs.csv
lib/eo/%.eo.cs: lib/eo/%.eo $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport eo -o $@ $(ALL_EO_REFS) $<
lib/ecore/%.eo.cs: lib/ecore/%.eo $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport ecore -o $@ $(ALL_EO_REFS) $<
lib/evas/%.eo.cs: lib/evas/%.eo $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport evas -o $@ $(ALL_EO_REFS) $<
lib/efl/%.eo.cs: lib/efl/%.eo $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport efl -o $@ $(ALL_EO_REFS) $<
lib/edje/%.eo.cs: lib/edje/%.eo $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport edje -o $@ $(ALL_EO_REFS) $<
lib/elementary/%.eo.cs: lib/elementary/%.eo $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport elementary -o $@ $(ALL_EO_REFS) $<
lib/ecore/%.eot.cs: lib/ecore/%.eot $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport ecore -o $@ $(ALL_EO_REFS) $<
lib/eo/%.eot.cs: lib/eo/%.eot $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport eo -o $@ $(ALL_EO_REFS) $<
lib/evas/%.eot.cs: lib/evas/%.eot $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport evas -o $@ $(ALL_EO_REFS) $<
lib/efl/%.eot.cs: lib/efl/%.eot $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport efl -o $@ $(ALL_EO_REFS) $<
lib/edje/%.eot.cs: lib/edje/%.eot $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport edje -o $@ $(ALL_EO_REFS) $<
lib/elementary/%.eot.cs: lib/elementary/%.eot $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport elementary -o $@ $(ALL_EO_REFS) $<
### Tests
if EFL_ENABLE_TESTS
# Intermediate C test native library
check_LTLIBRARIES += tests/efl_mono/libefl_mono_native_test.la
tests_efl_mono_libefl_mono_native_test_la_SOURCES = tests/efl_mono/libefl_mono_native_test.c
tests_efl_mono_libefl_mono_native_test_la_CPPFLAGS = \
-I$(builddir)/tests/efl_mono \
@CHECK_CFLAGS@ @EINA_CFLAGS@ @EO_CFLAGS@ @ECORE_CFLAGS@ @ELDBUS_CFLAGS@
tests_efl_mono_libefl_mono_native_test_la_LIBADD = \
@CHECK_LIBS@ @USE_EINA_LIBS@ @USE_EO_LIBS@ @USE_ECORE_LIBS@ @USE_ELDBUS_LIBS@
tests_efl_mono_libefl_mono_native_test_la_LDFLAGS = -rpath $(abs_top_builddir)/tests/efl_mono @EFL_LTLIBRARY_FLAGS@
tests_efl_mono_libefl_mono_native_test_la_DEPENDENCIES = @USE_EINA_INTERNAL_LIBS@ @USE_EO_INTERNAL_LIBS@ @USE_ECORE_INTERNAL_LIBS@ @USE_ELDBUS_INTERNAL_LIBS@
tests_efl_mono_libefl_mono_native_test_la_LIBTOOLFLAGS = --tag=disable-static
tests/efl_mono/libefl_mono_native_test.c: \
tests/efl_mono/dummy_test_object.eo.h \
tests/efl_mono/dummy_test_object.eo.c \
tests/efl_mono/dummy_test_iface.eo.h \
tests/efl_mono/dummy_test_iface.eo.c \
tests/efl_mono/dummy_another_iface.eo.h \
tests/efl_mono/dummy_another_iface.eo.c \
tests/efl_mono/dummy_child.eo.h \
tests/efl_mono/dummy_child.eo.c \
tests/efl_mono/dummy_numberwrapper.eo.h \
tests/efl_mono/dummy_numberwrapper.eo.c \
tests/efl_mono/dummy_inherit_iface.eo.h \
tests/efl_mono/dummy_inherit_iface.eo.c \
tests/efl_mono/dummy_inherit_helper.eo.h \
tests/efl_mono/dummy_inherit_helper.eo.c
# Intermediate C Sharp test DLL
efl_mono_test_eolian_mono_files = tests/efl_mono/dummy_test_object.eo.cs \
tests/efl_mono/dummy_test_iface.eo.cs \
tests/efl_mono/dummy_another_iface.eo.cs \
tests/efl_mono/dummy_child.eo.cs \
tests/efl_mono/dummy_numberwrapper.eo.cs \
tests/efl_mono/dummy_inherit_iface.eo.cs \
tests/efl_mono/dummy_inherit_helper.eo.cs
tests/efl_mono/libefl_mono_test.dll: $(efl_mono_test_eolian_mono_files) tests/efl_mono/$(am__dirstamp) lib/efl_mono/libefl_mono.dll tests/efl_mono/libefl_mono_native_test.la tests/efl_mono/libefl_mono_test.dll.config
@rm -f tests/efl_mono/libefl_mono_test.dll
$(AM_V_MCS) $(MCS) $(MCSFLAGS) -r:$(abs_builddir)/lib/efl_mono/libefl_mono.dll -out:$@ -t:library $(filter %.cs, $(^))
tests/efl_mono/efl_mono$(EXEEXT).config:
echo "" > $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo "" >> $@
tests/efl_mono/libefl_mono_test.dll.config:
echo "" > $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo " " >> $@
echo "" >> $@
# C Sharp test executable
AM_TESTS_ENVIRONMENT += MONO='mono'
AM_TESTS_ENVIRONMENT += MONO_BUILDPATH='$(abs_top_builddir)'
AM_TESTS_ENVIRONMENT += MONO_PATH='$(TEST_PATHS)'
AM_TESTS_ENVIRONMENT += EXEEXT='$(EXEEXT)'
if HAVE_WIN32
AM_TESTS_ENVIRONMENT += PATH='$(PATH):$(TEST_PATHS):$(WIN_ADD_TEST_PATHS)'
else
AM_TESTS_ENVIRONMENT += LD_LIBRARY_PATH='$(LD_LIBRARY_PATH):$(TEST_PATHS)'
check_PROGRAMS += tests/efl_mono/efl_mono
TESTS += tests/efl_mono/mono_test_driver.sh
tests_efl_mono_efl_mono_SOURCES = \
tests/efl_mono/Main.cs \
tests/efl_mono/TestUtils.cs \
tests/efl_mono/BasicDirection.cs \
tests/efl_mono/Eina.cs \
tests/efl_mono/Eldbus.cs \
tests/efl_mono/Eo.cs \
tests/efl_mono/EoPromises.cs \
tests/efl_mono/Errors.cs \
tests/efl_mono/Events.cs \
tests/efl_mono/FunctionPointers.cs \
tests/efl_mono/FunctionPointerMarshalling.cs \
tests/efl_mono/Parts.cs \
tests/efl_mono/Promises.cs \
tests/efl_mono/Strbuf.cs \
tests/efl_mono/Strings.cs \
tests/efl_mono/Structs.cs \
tests/efl_mono/Value.cs \
tests/efl_mono/ValueEolian.cs \
tests/efl_mono/EinaTestData.cs \
tests/efl_mono/StructHelpers.cs
tests/efl_mono/efl_mono$(EXEEXT): $(tests_efl_mono_efl_mono_SOURCES) tests/efl_mono/$(am__dirstamp) lib/efl_mono/libefl_mono.dll tests/efl_mono/libefl_mono_test.dll tests/efl_mono/efl_mono$(EXEEXT).config
@rm -f $@
$(AM_V_MCS) $(MCS) $(MCSFLAGS) -r:$(abs_top_builddir)/src/lib/efl_mono/libefl_mono.dll -r:$(abs_top_builddir)/src/tests/efl_mono/libefl_mono_test.dll -out:$@ $(filter %.cs, $(^))
# Rule for generating the .cs files
tests/efl_mono/%.eo.cs: tests/efl_mono/%.eo $(_EOLIAN_MONO_DEP)
$(AM_V_EOLMONO) \
$(MKDIR_P) $(dir $@); \
$(EOLIAN_MONO) $(EOLIAN_FLAGS) $(EOLIAN_MONO_FLAGS) --dllimport "@DLIB_PREFIX_MONO@efl_mono_native_test@DLIB_SUFFIX_MONO@" -o $@ $(ALL_EO_REFS) $<
CLEANFILES += tests/efl_mono/libefl_mono_test.dll tests/efl_mono/dummy_test_object.eo.cs tests/efl_mono/dummy_child.eo.cs tests/efl_mono/dummy_numberwrapper.eo.cs tests/efl_mono/dummy_test_object.eo.c tests/efl_mono/dummy_child.eo.c tests/efl_mono/dummy_numberwrapper.eo.c tests/efl_mono/dummy_test_object.eo.h tests/efl_mono/dummy_child.eo.h tests/efl_mono/dummy_numberwrapper.eo.h tests/efl_mono/efl_mono.config
endif
endif
endif
diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am
index e2a26c9e96..dc9610a56d 100644
--- a/src/Makefile_Elementary.am
+++ b/src/Makefile_Elementary.am
@@ -1,1866 +1,1872 @@
### Library
elm_public_eolian_files = \
lib/elementary/efl_ui_widget.eo \
lib/elementary/efl_ui_bg.eo \
lib/elementary/efl_ui_button.eo \
lib/elementary/efl_ui_calendar.eo \
lib/elementary/efl_ui_calendar_item.eo \
lib/elementary/efl_ui_check.eo \
lib/elementary/efl_ui_flip.eo \
lib/elementary/efl_ui_frame.eo \
lib/elementary/efl_ui_stack.eo \
lib/elementary/efl_ui_image.eo \
lib/elementary/efl_ui_image_zoomable.eo \
lib/elementary/efl_ui_layout.eo \
lib/elementary/efl_ui_layout_base.eo \
lib/elementary/efl_ui_nstate.eo \
lib/elementary/efl_ui_navigation_bar.eo \
lib/elementary/efl_ui_navigation_bar_part.eo \
lib/elementary/efl_ui_navigation_bar_part_back_button.eo \
lib/elementary/efl_ui_navigation_layout.eo \
lib/elementary/efl_ui_panes.eo \
lib/elementary/efl_ui_progressbar.eo \
lib/elementary/efl_ui_radio.eo \
lib/elementary/efl_ui_slider.eo \
lib/elementary/efl_ui_slider_interval.eo \
lib/elementary/efl_ui_spin.eo \
lib/elementary/efl_ui_spin_button.eo \
lib/elementary/efl_ui_datepicker.eo \
lib/elementary/efl_ui_timepicker.eo \
lib/elementary/efl_ui_tags.eo \
lib/elementary/efl_ui_panel.eo \
lib/elementary/efl_ui_video.eo \
lib/elementary/efl_ui_win.eo \
lib/elementary/efl_ui_win_inlined.eo \
lib/elementary/efl_ui_win_socket.eo \
lib/elementary/efl_ui_box.eo \
lib/elementary/efl_ui_box_flow.eo \
lib/elementary/efl_ui_box_stack.eo \
lib/elementary/efl_ui_table.eo \
lib/elementary/efl_ui_table_static.eo \
lib/elementary/efl_text_interactive.eo \
lib/elementary/efl_ui_text.eo \
lib/elementary/efl_ui_popup.eo \
lib/elementary/efl_ui_popup_part_backwall.eo \
lib/elementary/efl_ui_alert_popup.eo \
lib/elementary/efl_ui_alert_popup_part.eo \
lib/elementary/efl_ui_scroll_alert_popup.eo \
lib/elementary/efl_ui_scroll_alert_popup_part.eo \
lib/elementary/efl_ui_text_alert_popup.eo \
lib/elementary/efl_ui_text_alert_popup_part.eo \
lib/elementary/efl_ui_anchor_popup.eo \
lib/elementary/efl_ui_text_editable.eo \
lib/elementary/efl_ui_text_async.eo \
lib/elementary/efl_ui_text_factory_images.eo \
lib/elementary/efl_ui_text_factory_emoticons.eo \
lib/elementary/efl_ui_text_factory_fallback.eo \
lib/elementary/efl_ui_textpath.eo \
lib/elementary/efl_ui_l10n.eo \
lib/elementary/efl_ui_clock.eo \
lib/elementary/efl_ui_image_factory.eo \
lib/elementary/efl_ui_focus_manager.eo \
lib/elementary/efl_ui_focus_manager_calc.eo \
lib/elementary/efl_ui_focus_manager_sub.eo \
lib/elementary/efl_ui_focus_manager_root_focus.eo \
lib/elementary/efl_ui_focus_object.eo \
lib/elementary/efl_ui_focus_layer.eo \
lib/elementary/efl_ui_focus_composition.eo \
lib/elementary/efl_ui_focus_util.eo \
lib/elementary/efl_ui_flip_part.eo \
lib/elementary/efl_ui_layout_factory.eo \
lib/elementary/efl_ui_layout_part.eo \
lib/elementary/efl_ui_layout_part_box.eo \
lib/elementary/efl_ui_layout_part_content.eo \
lib/elementary/efl_ui_layout_part_text.eo \
lib/elementary/efl_ui_layout_part_table.eo \
lib/elementary/efl_ui_layout_part_bg.eo \
lib/elementary/efl_ui_layout_part_legacy.eo \
lib/elementary/efl_ui_list_view.eo \
lib/elementary/efl_ui_list_view_model.eo \
lib/elementary/efl_ui_list_view_pan.eo \
lib/elementary/efl_ui_item.eo \
lib/elementary/efl_ui_list_item.eo \
lib/elementary/efl_ui_list_default_item_part_icon.eo \
lib/elementary/efl_ui_list_default_item_part_end.eo \
lib/elementary/efl_ui_list_default_item.eo \
lib/elementary/efl_ui_list_empty_item.eo \
lib/elementary/efl_ui_list.eo \
lib/elementary/efl_ui_grid_item.eo \
lib/elementary/efl_ui_grid_default_item_part_icon.eo \
lib/elementary/efl_ui_grid_default_item_part_end.eo \
lib/elementary/efl_ui_grid_default_item.eo \
lib/elementary/efl_ui_grid.eo \
lib/elementary/efl_ui_panes_part.eo \
lib/elementary/efl_ui_progressbar_part.eo \
lib/elementary/elm_slider.eo \
lib/elementary/elm_slider_part_indicator.eo \
lib/elementary/efl_ui_textpath_part.eo \
lib/elementary/efl_ui_widget_part.eo \
lib/elementary/efl_ui_widget_part_bg.eo \
lib/elementary/efl_ui_widget_part_shadow.eo \
lib/elementary/efl_ui_win_part.eo \
lib/elementary/efl_ui_scroller.eo \
lib/elementary/efl_ui_scroll_manager.eo \
lib/elementary/efl_ui_pan.eo \
lib/elementary/efl_access_object.eo \
lib/elementary/efl_access_action.eo \
lib/elementary/efl_access_component.eo \
lib/elementary/efl_access_editable_text.eo \
lib/elementary/efl_access_selection.eo \
lib/elementary/efl_access_text.eo \
lib/elementary/efl_access_value.eo \
lib/elementary/efl_access_widget_action.eo \
lib/elementary/efl_access_window.eo \
lib/elementary/efl_ui_theme.eo \
lib/elementary/efl_config_global.eo \
lib/elementary/elm_code_widget.eo \
lib/elementary/efl_ui_selection.eo \
lib/elementary/efl_ui_dnd.eo \
lib/elementary/efl_ui_dnd_container.eo \
lib/elementary/efl_ui_focus_manager_window_root.eo \
lib/elementary/efl_ui_pager.eo \
lib/elementary/efl_page_transition.eo \
lib/elementary/efl_page_transition_scroll.eo \
lib/elementary/efl_page_indicator.eo \
lib/elementary/efl_page_indicator_icon.eo \
lib/elementary/efl_ui_tab_pager.eo \
lib/elementary/efl_ui_tab_bar.eo \
lib/elementary/efl_ui_tab_page.eo \
lib/elementary/efl_ui_tab_page_part_tab.eo \
lib/elementary/efl_ui_widget_focus_manager.eo \
lib/elementary/efl_ui_text_part.eo \
lib/elementary/efl_ui_caching_factory.eo \
lib/elementary/efl_ui_widget_factory.eo \
lib/elementary/efl_ui_relative_layout.eo \
$(NULL)
# More public files -- FIXME
elm_public_eolian_files += \
lib/elementary/efl_ui_legacy.eo \
lib/elementary/efl_ui_button_legacy_part.eo \
lib/elementary/efl_ui_radio_legacy_part.eo \
lib/elementary/efl_ui_check_legacy_part.eo \
lib/elementary/efl_ui_progressbar_legacy_part.eo \
lib/elementary/elm_spinner.eo \
lib/elementary/elm_multibuttonentry.eo \
lib/elementary/elm_multibuttonentry_item.eo \
lib/elementary/elm_multibuttonentry_part.eo \
lib/elementary/elm_interface_scrollable.eo \
lib/elementary/elm_atspi_bridge.eo \
lib/elementary/elm_atspi_app_object.eo \
lib/elementary/efl_ui_image_zoomable_pan.eo \
lib/elementary/elm_pan.eo \
lib/elementary/elm_toolbar.eo \
lib/elementary/elm_toolbar_item.eo \
lib/elementary/elm_view_list.eo \
lib/elementary/elm_view_form.eo \
lib/elementary/elm_web.eo \
lib/elementary/elm_widget_item.eo \
lib/elementary/elm_widget_item_container.eo \
$(NULL)
# Private classes (not exposed or shipped)
elm_private_eolian_files = \
lib/elementary/efl_ui_internal_text_interactive.eo \
lib/elementary/efl_ui_internal_text_scroller.eo \
lib/elementary/efl_ui_focus_composition_adapter.eo \
lib/elementary/efl_ui_win_part.eo \
lib/elementary/efl_ui_focus_parent_provider.eo \
lib/elementary/efl_ui_focus_parent_provider_standard.eo \
lib/elementary/efl_ui_focus_parent_provider_gen.eo \
lib/elementary/efl_ui_state_model.eo \
tests/elementary/focus_test.eo \
tests/elementary/focus_test_sub_main.eo \
lib/elementary/efl_ui_selection_manager.eo \
lib/elementary/efl_datetime_manager.eo \
lib/elementary/efl_ui_list_view_relayout.eo \
lib/elementary/efl_ui_list_view_precise_layouter.eo \
lib/elementary/efl_ui_size_model.eo \
lib/elementary/efl_ui_homogeneous_model.eo \
lib/elementary/efl_ui_exact_model.eo \
lib/elementary/efl_ui_average_model.eo \
$(NULL)
# Legacy classes - not part of public EO API
elm_legacy_eolian_files = \
lib/elementary/efl_ui_clock_legacy.eo \
- lib/elementary/elm_list.eo \
lib/elementary/elm_map.eo \
lib/elementary/elm_map_pan.eo \
lib/elementary/elm_menu.eo \
lib/elementary/elm_notify.eo \
lib/elementary/elm_panel.eo \
lib/elementary/elm_player.eo \
lib/elementary/elm_plug.eo \
lib/elementary/elm_popup.eo \
lib/elementary/elm_route.eo \
lib/elementary/elm_scroller.eo \
lib/elementary/elm_sys_notify_interface.eo \
lib/elementary/elm_sys_notify.eo \
lib/elementary/elm_sys_notify_dbus.eo \
lib/elementary/elm_systray.eo \
lib/elementary/elm_menu_item.eo \
lib/elementary/elm_widget_item_static_focus.eo \
- lib/elementary/elm_list_item.eo \
lib/elementary/elm_popup_item.eo \
lib/elementary/elm_ctxpopup_part.eo \
lib/elementary/elm_dayselector_part.eo \
lib/elementary/elm_entry_part.eo \
lib/elementary/elm_fileselector_entry_part.eo \
lib/elementary/elm_flip_part.eo \
lib/elementary/elm_hover_part.eo \
lib/elementary/elm_mapbuf_part.eo \
lib/elementary/elm_naviframe_part.eo \
lib/elementary/elm_notify_part.eo \
lib/elementary/elm_panel_part.eo \
lib/elementary/elm_player_part.eo \
lib/elementary/elm_popup_part.eo \
lib/elementary/elm_scroller_part.eo \
lib/elementary/elm_label_part.eo \
lib/elementary/elm_actionslider_part.eo \
lib/elementary/elm_bubble_part.eo \
lib/elementary/elm_fileselector_part.eo \
lib/elementary/elm_mapbuf.eo \
lib/elementary/elm_naviframe.eo \
lib/elementary/elm_naviframe_item.eo \
lib/elementary/elm_photo.eo \
lib/elementary/elm_prefs.eo \
lib/elementary/elm_segment_control.eo \
lib/elementary/elm_segment_control_item.eo \
lib/elementary/elm_separator.eo \
lib/elementary/elm_slideshow.eo \
lib/elementary/elm_slideshow_item.eo \
lib/elementary/elm_table.eo \
lib/elementary/elm_thumb.eo \
$(NULL)
elm_eolian_type_files = \
lib/elementary/elm_general.eot \
lib/elementary/efl_ui.eot \
lib/elementary/efl_ui_list_view_types.eot \
lib/elementary/efl_ui_selection_types.eot \
lib/elementary/efl_ui_dnd_types.eot
elm_public_eolian_c = $(elm_public_eolian_files:%.eo=%.eo.c)
elm_public_eolian_h = $(elm_public_eolian_files:%.eo=%.eo.h) \
$(elm_public_eolian_files:%.eo=%.eo.legacy.h) \
$(elm_eolian_type_files:%.eot=%.eot.h)
elm_private_eolian_c = $(elm_private_eolian_files:%.eo=%.eo.c)
elm_private_eolian_h = $(elm_private_eolian_files:%.eo=%.eo.h)
elm_legacy_eolian_c = $(elm_legacy_eolian_files:%.eo=%.eo.c)
elm_legacy_eolian_eo_h = $(elm_legacy_eolian_files:%.eo=%.eo.h)
elm_legacy_eolian_legacy_h = $(elm_legacy_eolian_files:%.eo=%.eo.legacy.h)
BUILT_SOURCES += \
$(elm_public_eolian_c) \
$(elm_public_eolian_h) \
$(elm_private_eolian_c) \
$(elm_private_eolian_h) \
$(elm_legacy_eolian_c) \
$(elm_legacy_eolian_eo_h) \
$(elm_legacy_eolian_legacy_h)
elementaryeolianfilesdir = $(datadir)/eolian/include/elementary-@VMAJ@
elementaryeolianfiles_DATA = $(elm_public_eolian_files) $(elm_eolian_type_files)
noinst_DATA += $(elm_legacy_eolian_eo_h)
elm_legacy_eo_files = \
lib/elementary/efl_ui_bg_legacy_eo.c \
lib/elementary/efl_ui_button_legacy_eo.c \
lib/elementary/efl_ui_check_legacy_eo.c \
lib/elementary/efl_ui_flip_legacy_eo.c \
lib/elementary/efl_ui_frame_legacy_eo.c \
lib/elementary/efl_ui_image_legacy_eo.c \
lib/elementary/efl_ui_image_zoomable_eo.legacy.c \
lib/elementary/efl_ui_image_zoomable_legacy_eo.c \
lib/elementary/efl_ui_layout_legacy_eo.c \
lib/elementary/efl_ui_panes_eo.legacy.c \
lib/elementary/efl_ui_panes_legacy_eo.c \
lib/elementary/efl_ui_progressbar_legacy_eo.c \
lib/elementary/efl_ui_radio_eo.legacy.c \
lib/elementary/efl_ui_radio_legacy_eo.c \
lib/elementary/efl_ui_textpath_eo.legacy.c \
lib/elementary/efl_ui_textpath_legacy_eo.c \
lib/elementary/efl_ui_video_eo.legacy.c \
lib/elementary/efl_ui_video_legacy_eo.c \
lib/elementary/efl_ui_widget_eo.legacy.c \
lib/elementary/efl_ui_win_inlined_legacy_eo.c \
lib/elementary/efl_ui_win_legacy_eo.c \
lib/elementary/efl_ui_win_socket_legacy_eo.c \
lib/elementary/elm_access_eo.c \
lib/elementary/elm_access_eo.legacy.c \
lib/elementary/elm_actionslider_eo.c \
lib/elementary/elm_actionslider_eo.legacy.c \
lib/elementary/elm_box_eo.c \
lib/elementary/elm_box_eo.legacy.c \
lib/elementary/elm_bubble_eo.c \
lib/elementary/elm_bubble_eo.legacy.c \
lib/elementary/elm_calendar_eo.c \
lib/elementary/elm_calendar_eo.legacy.c \
lib/elementary/elm_calendar_item_eo.c \
lib/elementary/elm_clock_eo.c \
lib/elementary/elm_clock_eo.legacy.c \
lib/elementary/elm_code_widget_eo.legacy.c \
lib/elementary/elm_code_widget_legacy_eo.c \
lib/elementary/elm_color_item_eo.legacy.c \
lib/elementary/elm_color_item_eo.c \
lib/elementary/elm_colorselector_eo.legacy.c \
lib/elementary/elm_colorselector_eo.c \
lib/elementary/elm_conformant_eo.c \
lib/elementary/elm_ctxpopup_eo.legacy.c \
lib/elementary/elm_ctxpopup_eo.c \
lib/elementary/elm_ctxpopup_item_eo.legacy.c \
lib/elementary/elm_ctxpopup_item_eo.c \
lib/elementary/elm_dayselector_eo.legacy.c \
lib/elementary/elm_dayselector_eo.c \
lib/elementary/elm_dayselector_item_eo.c \
lib/elementary/elm_diskselector_eo.legacy.c \
lib/elementary/elm_diskselector_eo.c \
lib/elementary/elm_diskselector_item_eo.legacy.c \
lib/elementary/elm_diskselector_item_eo.c \
lib/elementary/elm_entry_eo.legacy.c \
lib/elementary/elm_entry_eo.c \
lib/elementary/elm_fileselector_button_eo.c \
lib/elementary/elm_fileselector_entry_eo.c \
lib/elementary/elm_fileselector_eo.legacy.c \
lib/elementary/elm_fileselector_eo.c \
lib/elementary/elm_flipselector_eo.legacy.c \
lib/elementary/elm_flipselector_eo.c \
lib/elementary/elm_flipselector_item_eo.legacy.c \
lib/elementary/elm_flipselector_item_eo.c \
lib/elementary/elm_gengrid_eo.legacy.c \
lib/elementary/elm_gengrid_eo.c \
lib/elementary/elm_gengrid_item_eo.legacy.c \
lib/elementary/elm_gengrid_item_eo.c \
lib/elementary/elm_gengrid_pan_eo.c \
lib/elementary/elm_genlist_eo.legacy.c \
lib/elementary/elm_genlist_eo.c \
lib/elementary/elm_genlist_item_eo.legacy.c \
lib/elementary/elm_genlist_item_eo.c \
lib/elementary/elm_genlist_pan_eo.c \
lib/elementary/elm_gesture_layer_eo.legacy.c \
lib/elementary/elm_gesture_layer_eo.c \
lib/elementary/elm_glview_eo.legacy.c \
lib/elementary/elm_glview_eo.c \
lib/elementary/elm_grid_eo.legacy.c \
lib/elementary/elm_grid_eo.c \
lib/elementary/elm_hover_eo.legacy.c \
lib/elementary/elm_hover_eo.c \
lib/elementary/elm_hoversel_eo.c \
lib/elementary/elm_hoversel_item_eo.c \
lib/elementary/elm_hoversel_item_eo.legacy.c \
lib/elementary/elm_icon_eo.c \
lib/elementary/elm_index_eo.c \
lib/elementary/elm_index_eo.legacy.c \
lib/elementary/elm_index_item_eo.c \
lib/elementary/elm_index_item_eo.legacy.c \
lib/elementary/elm_interface_fileselector_eo.c \
lib/elementary/elm_inwin_eo.c \
lib/elementary/elm_inwin_eo.legacy.c \
lib/elementary/elm_label_eo.c \
lib/elementary/elm_label_eo.legacy.c \
+lib/elementary/elm_list_eo.c \
+lib/elementary/elm_list_eo.legacy.c \
+lib/elementary/elm_list_item_eo.c \
+lib/elementary/elm_list_item_eo.legacy.c \
$(NULL)
elm_legacy_eo_headers = \
lib/elementary/efl_ui_bg_eo.legacy.h \
lib/elementary/efl_ui_bg_legacy_eo.h \
lib/elementary/efl_ui_bg_legacy_eo.legacy.h \
lib/elementary/efl_ui_button_eo.legacy.h \
lib/elementary/efl_ui_button_legacy_eo.h \
lib/elementary/efl_ui_button_legacy_eo.legacy.h \
lib/elementary/efl_ui_check_eo.legacy.h \
lib/elementary/efl_ui_check_legacy_eo.h \
lib/elementary/efl_ui_check_legacy_eo.legacy.h \
lib/elementary/efl_ui_flip_eo.legacy.h \
lib/elementary/efl_ui_flip_legacy_eo.h \
lib/elementary/efl_ui_flip_legacy_eo.legacy.h \
lib/elementary/efl_ui_frame_eo.legacy.h \
lib/elementary/efl_ui_frame_legacy_eo.h \
lib/elementary/efl_ui_frame_legacy_eo.legacy.h \
lib/elementary/efl_ui_image_legacy_eo.h \
lib/elementary/efl_ui_image_legacy_eo.legacy.h \
lib/elementary/efl_ui_image_zoomable_eo.legacy.h \
lib/elementary/efl_ui_image_zoomable_legacy_eo.h \
lib/elementary/efl_ui_image_zoomable_legacy_eo.legacy.h \
lib/elementary/efl_ui_layout_legacy_eo.h \
lib/elementary/efl_ui_layout_legacy_eo.legacy.h \
lib/elementary/efl_ui_panes_eo.legacy.h \
lib/elementary/efl_ui_panes_legacy_eo.h \
lib/elementary/efl_ui_panes_legacy_eo.legacy.h \
lib/elementary/efl_ui_progressbar_legacy_eo.h \
lib/elementary/efl_ui_progressbar_legacy_eo.legacy.h \
lib/elementary/efl_ui_radio_eo.legacy.h \
lib/elementary/efl_ui_radio_legacy_eo.h \
lib/elementary/efl_ui_radio_legacy_eo.legacy.h \
lib/elementary/efl_ui_textpath_eo.legacy.h \
lib/elementary/efl_ui_textpath_legacy_eo.h \
lib/elementary/efl_ui_textpath_legacy_eo.legacy.h \
lib/elementary/efl_ui_video_eo.legacy.h \
lib/elementary/efl_ui_video_legacy_eo.h \
lib/elementary/efl_ui_video_legacy_eo.legacy.h \
lib/elementary/efl_ui_widget_eo.legacy.h \
lib/elementary/efl_ui_win_inlined_legacy_eo.h \
lib/elementary/efl_ui_win_inlined_legacy_eo.legacy.h \
lib/elementary/efl_ui_win_legacy_eo.h \
lib/elementary/efl_ui_win_legacy_eo.legacy.h \
lib/elementary/efl_ui_win_socket_legacy_eo.h \
lib/elementary/efl_ui_win_socket_legacy_eo.legacy.h \
lib/elementary/elm_access_eo.h \
lib/elementary/elm_access_eo.legacy.h \
lib/elementary/elm_actionslider_eo.h \
lib/elementary/elm_actionslider_eo.legacy.h \
lib/elementary/elm_box_eo.h \
lib/elementary/elm_box_eo.legacy.h \
lib/elementary/elm_bubble_eo.h \
lib/elementary/elm_bubble_eo.legacy.h \
lib/elementary/elm_calendar_eo.h \
lib/elementary/elm_calendar_eo.legacy.h \
lib/elementary/elm_calendar_item_eo.h \
lib/elementary/elm_calendar_item_eo.legacy.h \
lib/elementary/elm_clock_eo.h \
lib/elementary/elm_clock_eo.legacy.h \
lib/elementary/elm_code_widget_eo.legacy.h \
lib/elementary/elm_code_widget_legacy_eo.h \
lib/elementary/elm_code_widget_legacy_eo.legacy.h \
lib/elementary/elm_color_item_eo.h \
lib/elementary/elm_color_item_eo.legacy.h \
lib/elementary/elm_colorselector_eo.h \
lib/elementary/elm_colorselector_eo.legacy.h \
lib/elementary/elm_conformant_eo.h \
lib/elementary/elm_conformant_eo.legacy.h \
lib/elementary/elm_ctxpopup_eo.h \
lib/elementary/elm_ctxpopup_eo.legacy.h \
lib/elementary/elm_ctxpopup_item_eo.h \
lib/elementary/elm_ctxpopup_item_eo.legacy.h \
lib/elementary/elm_dayselector_eo.h \
lib/elementary/elm_dayselector_eo.legacy.h \
lib/elementary/elm_dayselector_item_eo.h \
lib/elementary/elm_dayselector_item_eo.legacy.h \
lib/elementary/elm_diskselector_eo.h \
lib/elementary/elm_diskselector_eo.legacy.h \
lib/elementary/elm_diskselector_item_eo.h \
lib/elementary/elm_diskselector_item_eo.legacy.h \
lib/elementary/elm_entry_eo.h \
lib/elementary/elm_entry_eo.legacy.h \
lib/elementary/elm_fileselector_button_eo.h \
lib/elementary/elm_fileselector_button_eo.legacy.h \
lib/elementary/elm_fileselector_entry_eo.h \
lib/elementary/elm_fileselector_entry_eo.legacy.h \
lib/elementary/elm_fileselector_eo.h \
lib/elementary/elm_fileselector_eo.legacy.h \
lib/elementary/elm_flipselector_eo.h \
lib/elementary/elm_flipselector_eo.legacy.h \
lib/elementary/elm_flipselector_item_eo.h \
lib/elementary/elm_flipselector_item_eo.legacy.h \
lib/elementary/elm_gengrid_eo.h \
lib/elementary/elm_gengrid_eo.legacy.h \
lib/elementary/elm_gengrid_item_eo.h \
lib/elementary/elm_gengrid_item_eo.legacy.h \
lib/elementary/elm_gengrid_pan_eo.h \
lib/elementary/elm_gengrid_pan_eo.legacy.h \
lib/elementary/elm_gengrid_pan_eo.h \
lib/elementary/elm_gengrid_pan_eo.legacy.h \
lib/elementary/elm_genlist_eo.h \
lib/elementary/elm_genlist_eo.legacy.h \
lib/elementary/elm_genlist_item_eo.h \
lib/elementary/elm_genlist_item_eo.legacy.h \
lib/elementary/elm_genlist_pan_eo.h \
lib/elementary/elm_genlist_pan_eo.legacy.h \
lib/elementary/elm_gesture_layer_eo.h \
lib/elementary/elm_gesture_layer_eo.legacy.h \
lib/elementary/elm_glview_eo.h \
lib/elementary/elm_glview_eo.legacy.h \
lib/elementary/elm_grid_eo.h \
lib/elementary/elm_grid_eo.legacy.h \
lib/elementary/elm_hover_eo.h \
lib/elementary/elm_hover_eo.legacy.h \
lib/elementary/elm_hoversel_eo.h \
lib/elementary/elm_hoversel_eo.legacy.h \
lib/elementary/elm_hoversel_item_eo.h \
lib/elementary/elm_hoversel_item_eo.legacy.h \
lib/elementary/elm_icon_eo.h \
lib/elementary/elm_icon_eo.legacy.h \
lib/elementary/elm_index_eo.h \
lib/elementary/elm_index_eo.legacy.h \
lib/elementary/elm_index_item_eo.h \
lib/elementary/elm_index_item_eo.legacy.h \
lib/elementary/elm_interface_fileselector_eo.h \
lib/elementary/elm_interface_fileselector_eo.legacy.h \
lib/elementary/elm_inwin_eo.h \
lib/elementary/elm_inwin_eo.legacy.h \
lib/elementary/elm_label_eo.h \
lib/elementary/elm_label_eo.legacy.h \
+lib/elementary/elm_list_eo.h \
+lib/elementary/elm_list_eo.legacy.h \
+lib/elementary/elm_list_item_eo.h \
+lib/elementary/elm_list_item_eo.legacy.h \
$(NULL)
EXTRA_DIST2 += ${elementaryeolianfiles_DATA} $(elm_legacy_eolian_files) $(elm_private_eolian_files) $(elm_legacy_eo_files)
lib_LTLIBRARIES += lib/elementary/libelementary.la
includes_HEADERS = \
lib/elementary/Elementary.h \
lib/elementary/Elementary_Options.h \
lib/elementary/Elementary_Cursor.h \
$(elm_legacy_eo_headers)
includesdir = $(includedir)/elementary-@VMAJ@
includesunstable_HEADERS = \
lib/elementary/elm_gen_common.h \
lib/elementary/elm_atspi_bridge.h \
lib/elementary/efl_access_object.h \
lib/elementary/efl_access_text.h \
lib/elementary/efl_access_widget_action.h \
lib/elementary/efl_access_window.h \
lib/elementary/elm_interface_fileselector.h \
lib/elementary/elm_interface_scrollable.h \
lib/elementary/elm_interfaces.h \
lib/elementary/elm_widget.h \
lib/elementary/efl_ui_widget_common.h \
lib/elementary/elm_widget_actionslider.h \
lib/elementary/elm_widget_box.h \
lib/elementary/elm_widget_bubble.h \
lib/elementary/efl_ui_button_private.h \
lib/elementary/efl_ui_bg_private.h \
lib/elementary/elm_widget_calendar.h \
lib/elementary/efl_ui_calendar_private.h \
lib/elementary/efl_ui_check_private.h \
lib/elementary/elm_widget_clock.h \
lib/elementary/elm_widget_colorselector.h \
lib/elementary/elm_widget_conform.h \
lib/elementary/elm_widget_container.h \
lib/elementary/elm_widget_combobox.h \
lib/elementary/elm_widget_ctxpopup.h \
lib/elementary/elm_widget_dayselector.h \
lib/elementary/elm_widget_diskselector.h \
lib/elementary/elm_widget_entry.h \
lib/elementary/elm_widget_fileselector.h \
lib/elementary/elm_widget_fileselector_button.h \
lib/elementary/elm_widget_fileselector_entry.h \
lib/elementary/efl_ui_widget_flip.h \
lib/elementary/elm_widget_flipselector.h \
lib/elementary/efl_ui_widget_frame.h \
lib/elementary/efl_ui_stack_private.h \
lib/elementary/elm_widget_gengrid.h \
lib/elementary/elm_widget_genlist.h \
lib/elementary/elm_widget_glview.h \
lib/elementary/elm_widget_grid.h \
lib/elementary/elm_widget_hover.h \
lib/elementary/elm_widget_hoversel.h \
lib/elementary/elm_widget_icon.h \
lib/elementary/efl_ui_widget_image.h \
lib/elementary/efl_ui_popup_private.h \
lib/elementary/efl_ui_alert_popup_private.h \
lib/elementary/efl_ui_scroll_alert_popup_private.h \
lib/elementary/efl_ui_text_alert_popup_private.h \
lib/elementary/efl_ui_anchor_popup_private.h \
lib/elementary/elm_widget_index.h \
lib/elementary/elm_widget_inwin.h \
lib/elementary/elm_widget_label.h \
lib/elementary/elm_widget_layout.h \
lib/elementary/elm_widget_list.h \
lib/elementary/elm_widget_map.h \
lib/elementary/elm_widget_mapbuf.h \
lib/elementary/elm_widget_menu.h \
lib/elementary/elm_widget_multibuttonentry.h \
lib/elementary/elm_widget_naviframe.h \
lib/elementary/efl_ui_navigation_bar_private.h \
lib/elementary/efl_ui_navigation_layout_private.h \
lib/elementary/elm_widget_notify.h \
lib/elementary/elm_widget_panel.h \
lib/elementary/efl_ui_panes_private.h \
lib/elementary/elm_widget_photo.h \
lib/elementary/efl_ui_image_zoomable_private.h \
lib/elementary/elm_widget_player.h \
lib/elementary/elm_widget_plug.h \
lib/elementary/elm_widget_popup.h \
lib/elementary/elm_widget_prefs.h \
lib/elementary/efl_ui_progressbar_private.h \
lib/elementary/efl_ui_radio_private.h \
lib/elementary/elm_widget_route.h \
lib/elementary/elm_widget_scroller.h \
lib/elementary/elm_widget_segment_control.h \
lib/elementary/elm_widget_separator.h \
lib/elementary/elm_widget_slider.h \
lib/elementary/efl_ui_slider_private.h \
lib/elementary/efl_ui_slider_interval_private.h \
lib/elementary/elm_widget_slideshow.h \
lib/elementary/elm_widget_spinner.h \
lib/elementary/efl_ui_spin_private.h \
lib/elementary/efl_ui_spin_button_private.h \
lib/elementary/efl_ui_datepicker_private.h \
lib/elementary/efl_ui_timepicker_private.h \
lib/elementary/efl_ui_tags_private.h \
lib/elementary/efl_ui_panel_private.h \
lib/elementary/elm_widget_table.h \
lib/elementary/elm_widget_thumb.h \
lib/elementary/elm_widget_toolbar.h \
lib/elementary/efl_ui_video_private.h \
lib/elementary/efl_ui_item_private.h \
lib/elementary/efl_ui_list_item_private.h \
lib/elementary/efl_ui_list_private.h \
lib/elementary/efl_ui_grid_item_private.h \
lib/elementary/efl_ui_grid_private.h \
lib/elementary/efl_ui_list_view_private.h \
lib/elementary/efl_ui_list_view_seg_array.h \
lib/elementary/elm_widget_web.h \
lib/elementary/efl_ui_clock.h \
lib/elementary/elm_code.h \
lib/elementary/elm_code_widget_legacy.h \
lib/elementary/elm_code_widget_selection.h \
lib/elementary/elm_code_diff_widget.h \
lib/elementary/elm_code_common.h \
lib/elementary/elm_code_line.h \
lib/elementary/elm_code_text.h \
lib/elementary/elm_code_indent.h \
lib/elementary/elm_code_file.h \
lib/elementary/elm_code_parse.h \
lib/elementary/elm_code_syntax.h \
lib/elementary/efl_ui_widget_scroller.h \
lib/elementary/efl_ui_widget_scroll_manager.h \
lib/elementary/efl_ui_widget_pan.h \
lib/elementary/efl_ui_nstate_private.h \
lib/elementary/Efl_Ui.h \
lib/elementary/efl_ui_widget_pager.h \
lib/elementary/efl_page_transition.h \
lib/elementary/efl_page_transition_scroll.h \
lib/elementary/efl_page_indicator.h \
lib/elementary/efl_page_indicator_icon.h \
lib/elementary/efl_ui_tab_pager_private.h \
lib/elementary/efl_ui_tab_bar_private.h \
lib/elementary/efl_ui_tab_page_private.h \
lib/elementary/efl_ui_relative_layout_private.h
includesunstabledir = $(includedir)/elementary-@VMAJ@
nodist_includesunstable_HEADERS = \
$(elm_public_eolian_h) \
$(elm_legacy_eolian_legacy_h)
includesub_HEADERS = \
lib/elementary/elc_ctxpopup.h \
lib/elementary/elc_ctxpopup_legacy.h \
lib/elementary/elc_combobox.h \
lib/elementary/elc_combobox_legacy.h \
lib/elementary/elc_fileselector.h \
lib/elementary/elc_fileselector_legacy.h \
lib/elementary/elc_fileselector_common.h \
lib/elementary/elc_fileselector_button.h \
lib/elementary/elc_fileselector_button_legacy.h \
lib/elementary/elc_fileselector_entry.h \
lib/elementary/elc_fileselector_entry_legacy.h \
lib/elementary/elc_hoversel.h \
lib/elementary/elc_hoversel_legacy.h \
lib/elementary/elc_multibuttonentry.h \
lib/elementary/elc_multibuttonentry_eo.h \
lib/elementary/elc_multibuttonentry_legacy.h \
lib/elementary/elc_multibuttonentry_common.h \
lib/elementary/elc_naviframe.h \
lib/elementary/elc_naviframe_legacy.h \
lib/elementary/elc_naviframe_common.h \
lib/elementary/elc_popup.h \
lib/elementary/elc_popup_legacy.h \
lib/elementary/elm_access.h \
lib/elementary/elm_actionslider.h \
lib/elementary/elm_actionslider_legacy.h \
lib/elementary/elm_app.h \
lib/elementary/elm_atspi_app_object.h \
lib/elementary/elm_authors.h \
lib/elementary/elm_bg.h \
lib/elementary/elm_bg_legacy.h \
lib/elementary/elm_box.h \
lib/elementary/elm_box_legacy.h \
lib/elementary/elm_box_common.h \
lib/elementary/elm_bubble.h \
lib/elementary/elm_bubble_legacy.h \
lib/elementary/elm_button.h \
lib/elementary/efl_ui_button_eo.h \
lib/elementary/elm_button_legacy.h \
lib/elementary/elm_cache.h \
lib/elementary/elm_calendar.h \
lib/elementary/elm_calendar_legacy.h \
lib/elementary/elm_calendar_common.h \
lib/elementary/efl_ui_calendar.h \
lib/elementary/elm_check.h \
lib/elementary/efl_ui_check_eo.h \
lib/elementary/elm_check_legacy.h \
lib/elementary/elm_clock.h \
lib/elementary/elm_clock_legacy.h \
lib/elementary/elm_cnp.h \
lib/elementary/elm_colorselector.h \
lib/elementary/elm_colorselector_legacy.h \
lib/elementary/elm_colorselector_common.h \
lib/elementary/elm_color_class.h \
lib/elementary/elm_config.h \
lib/elementary/elm_conform.h \
lib/elementary/elm_conform_legacy.h \
lib/elementary/elm_cursor.h \
lib/elementary/elm_datetime.h \
lib/elementary/elm_dayselector.h \
lib/elementary/elm_dayselector_legacy.h \
lib/elementary/elm_debug.h \
lib/elementary/elm_deprecated.h \
lib/elementary/elm_diskselector.h \
lib/elementary/elm_diskselector_common.h \
lib/elementary/elm_diskselector_legacy.h \
lib/elementary/elm_entry.h \
lib/elementary/elm_entry_common.h \
lib/elementary/elm_entry_eo.h \
lib/elementary/elm_entry_legacy.h \
lib/elementary/elm_finger.h \
lib/elementary/elm_flip.h \
lib/elementary/efl_ui_flip_eo.h \
lib/elementary/efl_ui_flip_legacy.h \
lib/elementary/elm_flipselector.h \
lib/elementary/elm_flipselector_legacy.h \
lib/elementary/elm_focus.h \
lib/elementary/elm_focus_item.h \
lib/elementary/elm_font.h \
lib/elementary/elm_frame.h \
lib/elementary/efl_ui_frame_eo.h \
lib/elementary/efl_ui_frame_legacy.h \
lib/elementary/elm_gen.h \
lib/elementary/elm_general.h \
lib/elementary/elm_gengrid.h \
lib/elementary/elm_gengrid_common.h \
lib/elementary/elm_gengrid_legacy.h \
lib/elementary/elm_genlist.h \
lib/elementary/elm_genlist_common.h \
lib/elementary/elm_genlist_legacy.h \
lib/elementary/elm_gesture_layer.h \
lib/elementary/elm_gesture_layer_common.h \
lib/elementary/elm_gesture_layer_legacy.h \
lib/elementary/elm_getting_started.h \
lib/elementary/elm_glview.h \
lib/elementary/elm_glview_common.h \
lib/elementary/elm_glview_legacy.h \
lib/elementary/elm_grid.h \
lib/elementary/elm_grid_legacy.h \
lib/elementary/elm_hover.h \
lib/elementary/elm_hover_legacy.h \
lib/elementary/elm_icon.h \
lib/elementary/elm_icon_legacy.h \
lib/elementary/elm_image.h \
lib/elementary/elm_image_eo.h \
lib/elementary/elm_image_legacy.h \
lib/elementary/elm_index.h \
lib/elementary/elm_index_legacy.h \
${top_builddir}/elm_intro.h \
lib/elementary/elm_inwin.h \
lib/elementary/elm_inwin_legacy.h \
lib/elementary/elm_label.h \
lib/elementary/elm_label_legacy.h \
lib/elementary/elm_layout.h \
lib/elementary/elm_layout_common.h \
lib/elementary/elm_layout_legacy.h \
lib/elementary/elm_list.h \
lib/elementary/elm_list_legacy.h \
lib/elementary/elm_macros.h \
lib/elementary/elm_map.h \
lib/elementary/elm_map_common.h \
lib/elementary/elm_map_legacy.h \
lib/elementary/elm_mapbuf.h \
lib/elementary/elm_mapbuf_legacy.h \
lib/elementary/elm_menu.h \
lib/elementary/elm_menu_legacy.h \
lib/elementary/elm_mirroring.h \
lib/elementary/elm_need.h \
lib/elementary/elm_notify.h \
lib/elementary/elm_notify_common.h \
lib/elementary/elm_notify_legacy.h \
lib/elementary/efl_ui_nstate.h \
lib/elementary/elm_object.h \
lib/elementary/elm_object_item.h \
lib/elementary/elm_panel.h \
lib/elementary/elm_panel_common.h \
lib/elementary/elm_panel_legacy.h \
lib/elementary/elm_panes.h \
lib/elementary/efl_ui_panes_eo.h \
lib/elementary/elm_panes_legacy.h \
lib/elementary/elm_photo.h \
lib/elementary/elm_photo_legacy.h \
lib/elementary/elm_photocam.h \
lib/elementary/efl_ui_image_zoomable_eo.h \
lib/elementary/elm_photocam_legacy.h \
lib/elementary/elm_plug.h \
lib/elementary/elm_plug_legacy.h \
lib/elementary/elm_prefs.h \
lib/elementary/elm_prefs_common.h \
lib/elementary/elm_prefs_legacy.h \
lib/elementary/elm_prefs_data.h \
lib/elementary/elm_progressbar.h \
lib/elementary/elm_progressbar_common.h \
lib/elementary/efl_ui_progressbar_eo.h \
lib/elementary/elm_progressbar_legacy.h \
lib/elementary/elm_radio.h \
lib/elementary/efl_ui_radio_eo.h \
lib/elementary/elm_radio_legacy.h \
lib/elementary/elm_route.h \
lib/elementary/elm_route_legacy.h \
lib/elementary/elm_scale.h \
lib/elementary/elm_scroll.h \
lib/elementary/elm_scroller.h \
lib/elementary/elm_scroller_legacy.h \
lib/elementary/elm_segment_control.h \
lib/elementary/elm_segment_control_legacy.h \
lib/elementary/elm_separator.h \
lib/elementary/elm_separator_legacy.h \
lib/elementary/elm_slider.h \
lib/elementary/elm_slider_common.h \
lib/elementary/elm_slider_legacy.h \
lib/elementary/elm_slideshow.h \
lib/elementary/elm_slideshow_common.h \
lib/elementary/elm_slideshow_legacy.h \
lib/elementary/elm_spinner.h \
lib/elementary/elm_spinner_legacy.h \
lib/elementary/elm_store.h \
lib/elementary/elm_systray.h \
lib/elementary/elm_systray_common.h \
lib/elementary/elm_systray_watcher.h \
lib/elementary/elm_sys_notify.h \
lib/elementary/elm_table.h \
lib/elementary/elm_table_legacy.h \
lib/elementary/elm_textpath.h \
lib/elementary/elm_textpath_legacy.h \
lib/elementary/elm_theme.h \
lib/elementary/elm_thumb.h \
lib/elementary/elm_thumb_common.h \
lib/elementary/elm_thumb_legacy.h \
lib/elementary/elm_toolbar.h \
lib/elementary/elm_toolbar_common.h \
lib/elementary/elm_toolbar_eo.h \
lib/elementary/elm_toolbar_legacy.h \
lib/elementary/elm_tooltip.h \
lib/elementary/elm_transit.h \
lib/elementary/efl_ui_video.h \
lib/elementary/efl_ui_video_eo.h \
lib/elementary/efl_ui_video_legacy.h \
lib/elementary/elm_view_list.h \
lib/elementary/elm_view_form.h \
lib/elementary/elm_web.h \
lib/elementary/elm_web_common.h \
lib/elementary/elm_web_eo.h \
lib/elementary/elm_web_legacy.h \
lib/elementary/elm_win.h \
lib/elementary/elm_win_common.h \
lib/elementary/elm_win_eo.h \
lib/elementary/elm_win_legacy.h \
lib/elementary/elm_helper.h \
lib/elementary/elm_part_helper.h \
$(NULL)
includesubdir = $(includedir)/elementary-@VMAJ@/
lib_elementary_libelementary_la_SOURCES = \
lib/elementary/elm_priv.h \
static_libs/atspi/atspi-constants.h \
lib/elementary/elementary_config.h \
lib/elementary/els_box.h \
lib/elementary/elc_ctxpopup.c \
lib/elementary/elc_fileselector.c \
lib/elementary/elc_fileselector_button.c \
lib/elementary/elc_fileselector_entry.c \
lib/elementary/elc_hoversel.c \
lib/elementary/elc_multibuttonentry.c \
lib/elementary/elc_naviframe.c \
lib/elementary/efl_ui_navigation_bar.c \
lib/elementary/efl_ui_navigation_layout.c \
lib/elementary/elc_player.c \
lib/elementary/elc_popup.c \
lib/elementary/elc_scrolled_entry.c \
lib/elementary/elm_access.c \
lib/elementary/elm_actionslider.c \
lib/elementary/elm_atspi_app_object.c \
lib/elementary/elm_atspi_bridge.c \
lib/elementary/efl_ui_legacy.c \
lib/elementary/efl_ui_bg.c \
lib/elementary/elm_box.c \
lib/elementary/elm_bubble.c \
lib/elementary/efl_ui_button.c \
lib/elementary/elm_calendar.c \
lib/elementary/efl_ui_calendar.c \
lib/elementary/efl_ui_check.c \
lib/elementary/elm_clock.c \
lib/elementary/elm_code_line.c \
lib/elementary/elm_code_text.c \
lib/elementary/elm_code_indent.c \
lib/elementary/elm_code_file.c \
lib/elementary/elm_code_parse.c \
lib/elementary/elm_code_syntax.c \
lib/elementary/elm_code_widget_selection.c \
lib/elementary/elm_code_widget.c \
lib/elementary/elm_code_diff_widget.c \
lib/elementary/elm_code.c \
lib/elementary/elm_code_private.h \
lib/elementary/elm_code_widget_private.h \
lib/elementary/elm_colorselector.c \
lib/elementary/elm_color_class.c \
lib/elementary/elc_combobox.c \
lib/elementary/elm_config.c \
lib/elementary/elm_conform.c \
lib/elementary/elm_datetime.c \
lib/elementary/elm_dayselector.c \
lib/elementary/elm_dbus_menu.c \
lib/elementary/elm_diskselector.c \
lib/elementary/elm_entry.c \
lib/elementary/efl_ui_flip.c \
lib/elementary/efl_ui_internal_text_interactive.c \
lib/elementary/efl_ui_internal_text_interactive.h \
lib/elementary/efl_ui_internal_text_scroller.c \
lib/elementary/efl_ui_internal_text_scroller.h \
lib/elementary/elm_flipselector.c \
lib/elementary/elm_font.c \
lib/elementary/efl_ui_frame.c \
lib/elementary/efl_ui_stack.c \
lib/elementary/elm_gengrid.c \
lib/elementary/elm_genlist.c \
lib/elementary/elm_gesture_layer.c \
lib/elementary/elm_gesture_layer_extra_gestures.c \
lib/elementary/elm_glview.c \
lib/elementary/elm_grid.c \
lib/elementary/elm_hover.c \
lib/elementary/elm_icon.c \
lib/elementary/efl_ui_image.c \
lib/elementary/elm_index.c \
lib/elementary/efl_access_object.c \
lib/elementary/efl_access_action.c \
lib/elementary/efl_access_component.c \
lib/elementary/efl_access_editable_text.c \
lib/elementary/efl_access_selection.c \
lib/elementary/efl_access_text.c \
lib/elementary/efl_access_value.c \
lib/elementary/efl_access_widget_action.c \
lib/elementary/efl_access_window.c \
lib/elementary/elm_interface_fileselector.c \
lib/elementary/elm_interface_scrollable.c \
lib/elementary/elm_inwin.c \
lib/elementary/elm_label.c \
lib/elementary/efl_ui_layout.c \
lib/elementary/efl_ui_layout_pack.c \
lib/elementary/elm_list.c \
lib/elementary/elm_main.c \
lib/elementary/elm_map.c \
lib/elementary/elm_mapbuf.c \
lib/elementary/elm_menu.c \
lib/elementary/elm_module.c \
lib/elementary/elm_notify.c \
lib/elementary/efl_ui_nstate.c \
lib/elementary/elm_panel.c \
lib/elementary/efl_ui_panes.c \
lib/elementary/elm_photo.c \
lib/elementary/efl_ui_image_zoomable.c \
lib/elementary/elm_plug.c \
lib/elementary/elm_prefs.c \
lib/elementary/elm_prefs_data.c \
lib/elementary/elm_prefs_edd.x \
lib/elementary/efl_ui_progressbar.c \
lib/elementary/efl_ui_radio.c \
lib/elementary/elm_route.c \
lib/elementary/elm_scroller.c \
lib/elementary/elm_segment_control.c \
lib/elementary/elm_separator.c \
lib/elementary/elm_slider.c \
lib/elementary/efl_ui_slider.c \
lib/elementary/efl_ui_slider_interval.c \
lib/elementary/efl_ui_spin.c \
lib/elementary/efl_ui_spin_button.c \
lib/elementary/efl_ui_datepicker.c \
lib/elementary/efl_ui_timepicker.c \
lib/elementary/efl_ui_tags.c \
lib/elementary/efl_ui_panel.c \
lib/elementary/elm_slideshow.c \
lib/elementary/elm_spinner.c \
lib/elementary/elm_store.c \
lib/elementary/elm_systray.c \
lib/elementary/elm_systray_watcher.c \
lib/elementary/elm_sys_notify_interface.c \
lib/elementary/elm_sys_notify.c \
lib/elementary/elm_sys_notify_dbus.c \
lib/elementary/elm_table.c \
lib/elementary/elm_theme.c \
lib/elementary/elm_thumb.c \
lib/elementary/elm_toolbar.c \
lib/elementary/elm_transit.c \
lib/elementary/elm_util.c \
lib/elementary/efl_ui_video.c \
lib/elementary/elm_view_list.c \
lib/elementary/elm_view_form.c \
lib/elementary/elm_web2.c \
lib/elementary/efl_ui_widget.c \
lib/elementary/efl_ui_widget_common.c \
lib/elementary/efl_ui_win.c \
lib/elementary/efl_ui_win_inlined.c \
lib/elementary/efl_ui_win_socket.c \
lib/elementary/elm_helper.c \
lib/elementary/els_box.c \
lib/elementary/els_cursor.c \
lib/elementary/els_tooltip.c \
lib/elementary/elu_ews_wm.c \
lib/elementary/efl_ui_container_layout.c \
lib/elementary/efl_ui_container_layout.h \
lib/elementary/efl_ui_box.c \
lib/elementary/efl_ui_box_flow.c \
lib/elementary/efl_ui_box_stack.c \
lib/elementary/efl_ui_box_layout.c \
lib/elementary/efl_ui_box_private.h \
lib/elementary/efl_ui_popup.c \
lib/elementary/efl_ui_alert_popup.c \
lib/elementary/efl_ui_scroll_alert_popup.c \
lib/elementary/efl_ui_text_alert_popup.c \
lib/elementary/efl_ui_anchor_popup.c \
lib/elementary/efl_ui_table.c \
lib/elementary/efl_ui_table_static.c \
lib/elementary/efl_ui_table_layout.c \
lib/elementary/efl_ui_table_private.h \
lib/elementary/efl_ui_text.c \
lib/elementary/efl_ui_text_factory_images.c \
lib/elementary/efl_ui_text_factory_emoticons.c \
lib/elementary/efl_ui_text_factory_fallback.c \
lib/elementary/efl_ui_clock.c \
lib/elementary/efl_ui_clock_private.h \
lib/elementary/efl_ui_image_factory.c \
lib/elementary/efl_ui_focus_manager.c \
lib/elementary/efl_ui_focus_manager_calc.c \
lib/elementary/efl_ui_focus_manager_sub.c \
lib/elementary/efl_ui_focus_object.c \
lib/elementary/efl_ui_focus_manager_root_focus.c \
lib/elementary/efl_ui_textpath.c \
lib/elementary/efl_ui_focus_layer.c \
lib/elementary/efl_ui_focus_composition.c \
lib/elementary/efl_ui_focus_parent_provider.c \
lib/elementary/efl_ui_focus_parent_provider_standard.c \
lib/elementary/efl_ui_focus_parent_provider_gen.c \
lib/elementary/efl_ui_focus_util.c \
lib/elementary/elm_widget_item_static_focus.c \
lib/elementary/efl_ui_item.c \
lib/elementary/efl_ui_list_item.c \
lib/elementary/efl_ui_list_default_item.c \
lib/elementary/efl_ui_list_empty_item.c \
lib/elementary/efl_ui_list.c \
lib/elementary/efl_ui_grid_item.c \
lib/elementary/efl_ui_grid_default_item.c \
lib/elementary/efl_ui_grid.c \
lib/elementary/efl_ui_list_view.c \
lib/elementary/efl_ui_list_view_precise_layouter.c \
lib/elementary/efl_ui_list_view_seg_array.c \
lib/elementary/efl_ui_layout_factory.c \
lib/elementary/efl_ui_scroller.c \
lib/elementary/efl_ui_scroll_manager.c \
lib/elementary/efl_ui_pan.c \
lib/elementary/efl_ui_selection_manager.c \
lib/elementary/efl_ui_selection_manager_private.h \
lib/elementary/efl_ui_selection.c \
lib/elementary/efl_datetime_manager.c \
lib/elementary/efl_ui_dnd.c \
lib/elementary/elm_focus_legacy.c \
static_libs/buildsystem/buildsystem.h \
static_libs/buildsystem/buildsystem_autotools.c \
lib/elementary/efl_ui_pager.c \
lib/elementary/efl_page_transition.c \
lib/elementary/efl_page_transition_scroll.c \
lib/elementary/efl_page_indicator.c \
lib/elementary/efl_page_indicator_icon.c \
lib/elementary/efl_ui_focus_graph.h \
lib/elementary/efl_ui_focus_graph.c \
lib/elementary/efl_ui_tab_pager.c \
lib/elementary/efl_ui_tab_bar.c \
lib/elementary/efl_ui_tab_page.c \
lib/elementary/efl_ui_widget_focus_manager.c \
lib/elementary/efl_ui_caching_factory.c \
lib/elementary/efl_ui_widget_factory.c \
lib/elementary/efl_ui_size_model.c \
lib/elementary/efl_ui_homogeneous_model.c \
lib/elementary/efl_ui_exact_model.c \
lib/elementary/efl_ui_average_model.c \
lib/elementary/efl_ui_relative_layout.c \
$(NULL)
lib_elementary_libelementary_la_CFLAGS = @ELEMENTARY_CFLAGS@
lib_elementary_libelementary_la_LIBADD = \
@ELEMENTARY_LIBS@ \
@LTLIBINTL@
lib_elementary_libelementary_la_DEPENDENCIES = @ELEMENTARY_INTERNAL_LIBS@
lib_elementary_libelementary_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
lib_elementary_libelementary_la_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-DMODULES_PATH=\"$(pkglibdir)/modules\" \
-I. \
-I$(top_builddir) \
-I$(top_srcdir) \
-I$(top_srcdir)/src/static_libs/ \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_srcdir)/src/modules/ecore_evas/engines/wayland \
-I$(top_builddir)/src/lib/elementary \
-DPACKAGE_DATA_DIR=\"$(datadir)/elementary\" \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_BUILD_DIR=\"$(abs_top_builddir)\" \
-DPACKAGE_SRC_DIR=\"$(abs_top_srcdir)\" \
-DLOCALE_DIR=\"$(localedir)\" \
-DICON_DIR=\"$(datadir)/icons\" \
-DELM_TOP_BUILD_DIR=\"$(top_builddir)\" \
-DELEMENTARY_BUILD \
@ELEMENTARY_CFLAGS@
if HAVE_WINDOWS
lib_elementary_libelementary_la_CPPFLAGS += \
-I$(top_srcdir)/src/lib/evil \
-I$(top_srcdir)/src/lib/evil/regex \
-DPOSIX_MISTAKE
endif
EXTRA_DIST2 += \
lib/elementary/elm_factory.h \
lib/elementary/elm_factory.c \
lib/elementary/elm_module_helper.h \
$(top_srcdir)/elm_intro.h.in
### Binary
bin_PROGRAMS += \
bin/elementary/elementary_test \
bin/elementary/elementary_config \
bin/elementary/elementary_codegen \
bin/elementary/elm_prefs_cc
if BUILD_QUICKLAUNCH
bin_PROGRAMS += \
bin/elementary/elementary_quicklaunch
if BUILD_RUN
bin_PROGRAMS += \
bin/elementary/elementary_run
endif
endif
bin_elementary_elementary_test_SOURCES = \
bin/elementary/test.c \
bin/elementary/test_explode.c \
bin/elementary/test_explode.h \
bin/elementary/test_3d.c \
bin/elementary/test_access.c \
bin/elementary/test_actionslider.c \
bin/elementary/test_anim.c \
bin/elementary/test_bg.c \
bin/elementary/test_box.c \
bin/elementary/test_bubble.c \
bin/elementary/test_button.c \
bin/elementary/test_ui_button.c \
bin/elementary/test_calendar.c \
bin/elementary/test_check.c \
bin/elementary/test_clock.c \
bin/elementary/test_cnp.c \
bin/elementary/test_code.c \
bin/elementary/test_colorselector.c \
bin/elementary/test_colorclass.c \
bin/elementary/test_combobox.c \
bin/elementary/test_config.c \
bin/elementary/test_conform.c \
bin/elementary/test_conform_indicator.c \
bin/elementary/test_ctxpopup.c \
bin/elementary/test_cursor.c \
bin/elementary/test_datetime.c \
bin/elementary/test_dayselector.c \
bin/elementary/test_disable.c \
bin/elementary/test_diskselector.c \
bin/elementary/test_dnd.c \
bin/elementary/test_efl_anim_alpha.c \
bin/elementary/test_efl_anim_rotate.c \
bin/elementary/test_efl_anim_scale.c \
bin/elementary/test_efl_anim_translate.c \
bin/elementary/test_efl_anim_group_parallel.c \
bin/elementary/test_efl_anim_group_sequential.c \
bin/elementary/test_efl_anim_pause.c \
bin/elementary/test_efl_anim_repeat.c \
bin/elementary/test_efl_anim_start_delay.c \
bin/elementary/test_efl_anim_interpolator.c \
bin/elementary/test_eio.c \
bin/elementary/test_entry.c \
bin/elementary/test_entry_anchor.c \
bin/elementary/test_entry_anchor2.c \
bin/elementary/test_events.c \
bin/elementary/test_evas_mask.c \
bin/elementary/test_evas_map.c \
bin/elementary/test_efl_gfx_mapping.c \
bin/elementary/test_evas_snapshot.c \
bin/elementary/test_external.c \
bin/elementary/test_fileselector_button.c \
bin/elementary/test_fileselector.c \
bin/elementary/test_fileselector_entry.c \
bin/elementary/test_flip.c \
bin/elementary/test_flip_page.c \
bin/elementary/test_flip_page_eo.c \
bin/elementary/test_flipselector.c \
bin/elementary/test_floating.c \
bin/elementary/test_focus.c \
bin/elementary/test_focus_custom_chain.c \
bin/elementary/test_focus_policy.c \
bin/elementary/test_focus_style.c \
bin/elementary/test_gengrid.c \
bin/elementary/test_genlist.c \
bin/elementary/test_gesture_layer.c \
bin/elementary/test_gesture_layer2.c \
bin/elementary/test_gesture_layer3.c \
bin/elementary/test_gfx_filters.c \
bin/elementary/test_glview_simple.c \
bin/elementary/test_glview.c \
bin/elementary/test_glview_manygears.c \
bin/elementary/test_grid.c \
bin/elementary/test_ui_table_static.c \
bin/elementary/test_ui_stack.c \
bin/elementary/test_hover.c \
bin/elementary/test_hoversel.c \
bin/elementary/test_icon.c \
bin/elementary/test_icon_desktops.c \
bin/elementary/test_icon_animated.c \
bin/elementary/test_image.c \
bin/elementary/test_index.c \
bin/elementary/test_inwin.c \
bin/elementary/test_label.c \
bin/elementary/test_launcher.c \
bin/elementary/test_layout.c \
bin/elementary/test_list.c \
bin/elementary/test_map.c \
bin/elementary/test_main_menu.c \
bin/elementary/test_menu.c \
bin/elementary/test_multi.c \
bin/elementary/test_multibuttonentry.c \
bin/elementary/test_naviframe.c \
bin/elementary/test_naviframe_complex.c \
bin/elementary/test_notify.c \
bin/elementary/test_nstate.c \
bin/elementary/test_panel.c \
bin/elementary/test_panes.c \
bin/elementary/test_ui_panes.c \
bin/elementary/test_part_bg.c \
bin/elementary/test_part_shadow.c \
bin/elementary/test_photo.c \
bin/elementary/test_photocam.c \
bin/elementary/test_popup.c \
bin/elementary/test_prefs.c \
bin/elementary/test_progressbar.c \
bin/elementary/test_ui_progressbar.c \
bin/elementary/test_radio.c \
bin/elementary/test_scaling.c \
bin/elementary/test_scroller.c \
bin/elementary/test_ui_scroller.c \
bin/elementary/test_segment_control.c \
bin/elementary/test_separator.c \
bin/elementary/test_slider.c \
bin/elementary/test_ui_slider.c \
bin/elementary/test_ui_slider_interval.c \
bin/elementary/test_ui_spin.c \
bin/elementary/test_ui_spin_button.c \
bin/elementary/test_ui_datepicker.c \
bin/elementary/test_ui_timepicker.c \
bin/elementary/test_ui_tags.c \
bin/elementary/test_ui_panel.c \
bin/elementary/test_slideshow.c \
bin/elementary/test_spinner.c \
bin/elementary/test_store.c \
bin/elementary/test_sys_notify.c \
bin/elementary/test_systray.c \
bin/elementary/test_table.c \
bin/elementary/test_thumb.c \
bin/elementary/test_toolbar.c \
bin/elementary/test_tooltip.c \
bin/elementary/test_transit.c \
bin/elementary/test_transit_bezier.c \
bin/elementary/test_ui_box.c \
bin/elementary/test_ui_clock.c \
bin/elementary/test_ui_table.c \
bin/elementary/test_ui_popup.c \
bin/elementary/test_ui_textpath.c \
bin/elementary/test_video.c \
bin/elementary/test_weather.c \
bin/elementary/test_web.c \
bin/elementary/test_win_inline.c \
bin/elementary/test_win_keygrab.c \
bin/elementary/test_win_socket.c \
bin/elementary/test_win_plug.c \
bin/elementary/test_win_state.c \
bin/elementary/test_win_wm_rotation.c \
bin/elementary/test_win_dialog.c \
bin/elementary/test_win_modal.c \
bin/elementary/test_efl_ui_text.c \
bin/elementary/test_win_stack.c \
bin/elementary/test_win_indicator.c \
bin/elementary/test_gesture_framework.c \
bin/elementary/test_ui_tab_pager.c \
bin/elementary/test_ui_pager.c \
bin/elementary/test_ui_pager_scroll.c \
bin/elementary/test_ui_relative_layout.c \
bin/elementary/test.h
bin_elementary_elementary_test_LDADD = @USE_ELEMENTARY_LIBS@
bin_elementary_elementary_test_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
bin_elementary_elementary_test_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-I$(top_srcdir)/src/bin/elementary \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(datadir)/elementary\" \
@ELEMENTARY_CFLAGS@
bin_elementary_elementary_config_SOURCES = bin/elementary/config.c
bin_elementary_elementary_config_LDADD = @USE_ELEMENTARY_LIBS@
bin_elementary_elementary_config_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
bin_elementary_elementary_config_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-I$(top_srcdir)/src/bin/elementary \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(datadir)/elementary\" \
@ELEMENTARY_CFLAGS@
bin_elementary_elementary_codegen_SOURCES = bin/elementary/elementary_codegen.c
bin_elementary_elementary_codegen_LDADD = @USE_ELEMENTARY_LIBS@
bin_elementary_elementary_codegen_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
bin_elementary_elementary_codegen_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-I$(top_srcdir)/src/bin/elementary \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
@ELEMENTARY_CFLAGS@
noinst_HEADERS += \
bin/elementary/elm_prefs_cc.h
bin_elementary_elm_prefs_cc_SOURCES = \
bin/elementary/elm_prefs_cc.c \
bin/elementary/elm_prefs_cc_mem.c \
bin/elementary/elm_prefs_cc_out.c \
bin/elementary/elm_prefs_cc_parse.c \
bin/elementary/elm_prefs_cc_handlers.c
bin_elementary_elm_prefs_cc_LDADD = @USE_ELEMENTARY_LIBS@
bin_elementary_elm_prefs_cc_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
bin_elementary_elm_prefs_cc_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-I$(top_srcdir)/src/bin/elementary \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
@ELEMENTARY_CFLAGS@
if HAVE_WINDOWS
bin_elementary_elm_prefs_cc_CPPFLAGS += \
-I$(top_srcdir)/src/lib/evil \
-I$(top_srcdir)/src/lib/evil/regex \
-DPOSIX_MISTAKE
endif
if BUILD_QUICKLAUNCH
bin_elementary_elementary_quicklaunch_SOURCES = bin/elementary/quicklaunch.c
bin_elementary_elementary_quicklaunch_LDADD = @USE_ELEMENTARY_LIBS@ @requirements_libs_elm@
bin_elementary_elementary_quicklaunch_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
bin_elementary_elementary_quicklaunch_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-I$(top_srcdir)/src/bin/elementary \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
@ELEMENTARY_CFLAGS@
if BUILD_RUN
bin_elementary_elementary_run_CPPFLAGS = -I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary/ \
-I$(top_builddir)/src/lib/elementary/ \
-I$(top_srcdir)/src/bin/elementary/ \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\"
bin_elementary_elementary_run_SOURCES = bin/elementary/run.c
bin_elementary_elementary_run_LDADD = @requirements_libs_elm@
bin_elementary_elementary_run_LDFLAGS =
endif
endif
EXTRA_DIST2 += \
bin/elementary/test_factory.c
### Modules
## access_output
moduleaccess_outputpkgdir = $(libdir)/elementary/modules/access_output/$(MODULE_ARCH)
moduleaccess_outputpkg_LTLIBRARIES = modules/elementary/access_output/module.la
# Workaround for broken parallel install support in automake (relink issue)
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
install_moduleaccess_outputpkgLTLIBRARIES = install-moduleaccess_outputpkgLTLIBRARIES
$(install_moduleaccess_outputpkgLTLIBRARIES): install-libLTLIBRARIES
modules_elementary_access_output_module_la_SOURCES = modules/elementary/access_output/mod.c
modules_elementary_access_output_module_la_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-I. \
-I$(top_builddir) \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
@ELEMENTARY_CFLAGS@
modules_elementary_access_output_module_la_LIBADD = @USE_ELEMENTARY_LIBS@
modules_elementary_access_output_module_la_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
modules_elementary_access_output_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_elementary_access_output_module_la_LIBTOOLFLAGS = --tag=disable-static
## clock_input_ctxpopup
moduleclock_input_ctxpopuppkgdir = $(libdir)/elementary/modules/clock_input_ctxpopup/$(MODULE_ARCH)
moduleclock_input_ctxpopuppkg_LTLIBRARIES = modules/elementary/clock_input_ctxpopup/module.la
# Workaround for broken parallel install support in automake (relink issue)
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
install_moduleclock_input_ctxpopuppkgLTLIBRARIES = install-moduleclock_input_ctxpopuppkgLTLIBRARIES
$(install_moduleclock_input_ctxpopuppkgLTLIBRARIES): install-libLTLIBRARIES
modules_elementary_clock_input_ctxpopup_module_la_SOURCES = \
modules/elementary/clock_input_ctxpopup/clock_input_ctxpopup.c
modules_elementary_clock_input_ctxpopup_module_la_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-I. \
-I$(top_builddir) \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
@ELEMENTARY_CFLAGS@
modules_elementary_clock_input_ctxpopup_module_la_LIBADD = @USE_ELEMENTARY_LIBS@
modules_elementary_clock_input_ctxpopup_module_la_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
modules_elementary_clock_input_ctxpopup_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_elementary_clock_input_ctxpopup_module_la_LIBTOOLFLAGS = --tag=disable-static
## prefs
moduleprefspkgdir = $(libdir)/elementary/modules/prefs/$(MODULE_ARCH)
moduleprefspkg_LTLIBRARIES = modules/elementary/prefs/module.la
EXTRA_DIST2 += modules/elementary/prefs/elm_prefs_swallow.edc
prefs_filesdir = $(libdir)/elementary/modules/prefs/$(MODULE_ARCH)
prefs_files_DATA = modules/elementary/prefs/elm_prefs_swallow.edj
CLEANFILES += $(prefs_files_DATA)
modules/elementary/prefs/elm_prefs_swallow.edj: modules/elementary/prefs/elm_prefs_swallow.edc bin/edje/edje_cc${EXEEXT}
$(AM_V_EDJ) \
$(MKDIR_P) modules/elementary/prefs/ ; \
$(EDJE_CC) $(EDJE_CC_FLAGS) -id $(top_srcdir)/src/modules/elementary/prefs/ $< $@
# Workaround for broken parallel install support in automake (relink issue)
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
install_moduleprefspkgLTLIBRARIES = install-moduleprefspkgLTLIBRARIES
$(install_moduleprefspkgLTLIBRARIES): install-libLTLIBRARIES
modules_elementary_prefs_module_la_SOURCES = \
modules/elementary/prefs/private.h \
modules/elementary/prefs/item_widgets.inc \
modules/elementary/prefs/page_widgets.inc \
modules/elementary/prefs/prefs_iface.c \
modules/elementary/prefs/elm_button.c \
modules/elementary/prefs/elm_check.c \
modules/elementary/prefs/elm_datetime.c \
modules/elementary/prefs/elm_entry.c \
modules/elementary/prefs/elm_label.c \
modules/elementary/prefs/elm_separator.c \
modules/elementary/prefs/elm_slider.c \
modules/elementary/prefs/elm_spinner.c \
modules/elementary/prefs/elm_swallow.c \
modules/elementary/prefs/elm_vertical_box.c \
modules/elementary/prefs/elm_horizontal_box.c \
modules/elementary/prefs/elm_vertical_frame.c \
modules/elementary/prefs/elm_horizontal_frame.c
modules_elementary_prefs_module_la_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-I. \
-I$(top_builddir) \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
@ELEMENTARY_CFLAGS@
if HAVE_WINDOWS
modules_elementary_prefs_module_la_CPPFLAGS += \
-I$(top_srcdir)/src/lib/evil \
-I$(top_srcdir)/src/lib/evil/regex \
-DPOSIX_MISTAKE
endif
modules_elementary_prefs_module_la_LIBADD = @USE_ELEMENTARY_LIBS@
modules_elementary_prefs_module_la_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
modules_elementary_prefs_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_elementary_prefs_module_la_LIBTOOLFLAGS = --tag=disable-static
## test_entry
moduletest_entrypkgdir = $(libdir)/elementary/modules/test_entry/$(MODULE_ARCH)
moduletest_entrypkg_LTLIBRARIES = modules/elementary/test_entry/module.la
# Workaround for broken parallel install support in automake (relink issue)
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
install_moduletest_entrypkgLTLIBRARIES = install-moduletest_entrypkgLTLIBRARIES
$(install_moduletest_entrypkgLTLIBRARIES): install-libLTLIBRARIES
modules_elementary_test_entry_module_la_SOURCES = modules/elementary/test_entry/mod.c
modules_elementary_test_entry_module_la_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-I. \
-I$(top_builddir) \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
@ELEMENTARY_CFLAGS@
modules_elementary_test_entry_module_la_LIBADD = @USE_ELEMENTARY_LIBS@
modules_elementary_test_entry_module_la_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
modules_elementary_test_entry_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_elementary_test_entry_module_la_LIBTOOLFLAGS = --tag=disable-static
## test_map
moduletest_mappkgdir = $(libdir)/elementary/modules/test_map/$(MODULE_ARCH)
moduletest_mappkg_LTLIBRARIES = modules/elementary/test_map/module.la
# Workaround for broken parallel install support in automake (relink issue)
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
install_moduletest_mappkgLTLIBRARIES = install-moduletest_mappkgLTLIBRARIES
$(install_moduletest_mappkgLTLIBRARIES): install-libLTLIBRARIES
modules_elementary_test_map_module_la_SOURCES = modules/elementary/test_map/mod.c
modules_elementary_test_map_module_la_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-I. \
-I$(top_builddir) \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
@ELEMENTARY_CFLAGS@
modules_elementary_test_map_module_la_LIBADD = @USE_ELEMENTARY_LIBS@
modules_elementary_test_map_module_la_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
modules_elementary_test_map_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_elementary_test_map_module_la_LIBTOOLFLAGS = --tag=disable-static
## web_none
moduleweb_nonepkgdir = $(libdir)/elementary/modules/web/none/$(MODULE_ARCH)
moduleweb_nonepkg_LTLIBRARIES = modules/elementary/web/none/module.la
# Workaround for broken parallel install support in automake (relink issue)
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
install_moduleweb_nonepkgLTLIBRARIES = install-moduleweb_nonepkgLTLIBRARIES
$(install_moduleweb_nonepkgLTLIBRARIES): install-libLTLIBRARIES
elm_web_none_eolian_files = modules/elementary/web/none/elm_web_none.eo
elm_web_none_eolian_c = $(elm_web_none_eolian_files:%.eo=%.eo.c)
elm_web_none_eolian_h = $(elm_web_none_eolian_files:%.eo=%.eo.h)
EXTRA_DIST2 += $(elm_web_none_eolian_files)
BUILT_SOURCES += $(elm_web_none_eolian_c) $(elm_web_none_eolian_h)
modules_elementary_web_none_module_la_SOURCES = \
modules/elementary/web/none/elm_web_none.c
modules_elementary_web_none_module_la_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-DMODULES_PATH=\"$(libdir)/elementary/modules\" \
-I. \
-I$(top_builddir) \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-I$(top_builddir)/src/modules/elementary/web/none \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
@ELEMENTARY_CFLAGS@
modules_elementary_web_none_module_la_LIBADD = @USE_ELEMENTARY_LIBS@
modules_elementary_web_none_module_la_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
modules_elementary_web_none_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_elementary_web_none_module_la_LIBTOOLFLAGS = --tag=disable-static
## edje_external
moduleedje_externalpkgdir = $(libdir)/edje/modules/elm/$(MODULE_ARCH)
moduleedje_externalpkg_LTLIBRARIES = edje_external/elementary/module.la
# Workaround for broken parallel install support in automake (relink issue)
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
install_moduleedje_externalpkgLTLIBRARIES = install-moduleedje_externalpkgLTLIBRARIES
$(install_moduleedje_externalpkgLTLIBRARIES): install-libLTLIBRARIES
edje_external_elementary_module_la_SOURCES = \
edje_external/elementary/private.h \
edje_external/elementary/modules.inc \
edje_external/elementary/elm.c \
edje_external/elementary/elm_actionslider.c \
edje_external/elementary/elm_bg.c \
edje_external/elementary/elm_bubble.c \
edje_external/elementary/elm_button.c \
edje_external/elementary/elm_calendar.c \
edje_external/elementary/elm_check.c \
edje_external/elementary/elm_clock.c \
edje_external/elementary/elm_combobox.c \
edje_external/elementary/elm_entry.c \
edje_external/elementary/elm_fileselector.c \
edje_external/elementary/elm_fileselector_button.c \
edje_external/elementary/elm_fileselector_entry.c \
edje_external/elementary/elm_frame.c \
edje_external/elementary/elm_gengrid.c \
edje_external/elementary/elm_genlist.c \
edje_external/elementary/elm_hoversel.c \
edje_external/elementary/elm_icon.c \
edje_external/elementary/elm_index.c \
edje_external/elementary/elm_label.c \
edje_external/elementary/elm_list.c \
edje_external/elementary/elm_map.c \
edje_external/elementary/elm_multibuttonentry.c \
edje_external/elementary/elm_naviframe.c \
edje_external/elementary/elm_notify.c \
edje_external/elementary/elm_panes.c \
edje_external/elementary/elm_photocam.c \
edje_external/elementary/elm_progressbar.c \
edje_external/elementary/elm_radio.c \
edje_external/elementary/elm_scroller.c \
edje_external/elementary/elm_segment_control.c \
edje_external/elementary/elm_slider.c \
edje_external/elementary/elm_slideshow.c \
edje_external/elementary/elm_spinner.c \
edje_external/elementary/elm_thumb.c \
edje_external/elementary/elm_toolbar.c \
edje_external/elementary/elm_video.c \
edje_external/elementary/elm_web.c
edje_external_elementary_module_la_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-DMODULES_PATH=\"$(libdir)/elementary/modules\" \
-I. \
-I$(top_builddir) \
-I$(top_srcdir) \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-I$(top_builddir)/src/edje_externals \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
@ELEMENTARY_CFLAGS@
edje_external_elementary_module_la_LIBADD = @USE_ELEMENTARY_LIBS@
edje_external_elementary_module_la_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
edje_external_elementary_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
edje_external_elementary_module_la_LIBTOOLFLAGS = --tag=disable-static
testfilesdir = $(datadir)/elementary/
testfiles_DATA = \
tests/elementary/testfile.txt \
tests/elementary/testfile-windows.txt \
tests/elementary/testfile-withblanks.txt \
tests/elementary/testdiff.diff
### Tests
EXTRA_DIST2 += $(testfiles_DATA)
if EFL_ENABLE_TESTS
AM_TESTS_ENVIRONMENT += \
ELM_DATA_DIR=${top_builddir}/data/elementary \
ELM_RUN_IN_TREE=1 \
EFL_RUN_IN_TREE=1
check_PROGRAMS += tests/elementary/elm_suite tests/elementary/efl_ui_suite
TESTS += tests/elementary/elm_suite tests/elementary/efl_ui_suite
tests_elementary_elm_suite_SOURCES = \
tests/elementary/suite_helpers.c \
tests/elementary/elm_suite.c \
tests/elementary/elm_test_atspi.c \
tests/elementary/elm_test_check.c \
tests/elementary/elm_test_colorselector.c \
tests/elementary/elm_test_entry.c \
tests/elementary/elm_test_init.c \
tests/elementary/elm_test_list.c \
tests/elementary/elm_test_button.c \
tests/elementary/elm_test_image.c \
tests/elementary/elm_test_photo.c \
tests/elementary/elm_test_actionslider.c \
tests/elementary/elm_test_box.c \
tests/elementary/elm_test_table.c \
tests/elementary/elm_test_thumb.c \
tests/elementary/elm_test_menu.c \
tests/elementary/elm_test_photocam.c \
tests/elementary/elm_test_win.c \
tests/elementary/elm_test_icon.c \
tests/elementary/elm_test_prefs.c \
tests/elementary/elm_test_map.c \
tests/elementary/elm_test_glview.c \
tests/elementary/elm_test_web.c \
tests/elementary/elm_test_toolbar.c \
tests/elementary/elm_test_grid.c \
tests/elementary/elm_test_diskselector.c \
tests/elementary/elm_test_notify.c \
tests/elementary/elm_test_mapbuf.c \
tests/elementary/elm_test_flip.c \
tests/elementary/elm_test_layout.c \
tests/elementary/elm_test_slider.c \
tests/elementary/elm_test_ctxpopup.c \
tests/elementary/elm_test_separator.c \
tests/elementary/elm_test_calendar.c \
tests/elementary/elm_test_inwin.c \
tests/elementary/elm_test_gengrid.c \
tests/elementary/elm_test_radio.c \
tests/elementary/elm_test_scroller.c \
tests/elementary/elm_test_frame.c \
tests/elementary/elm_test_datetime.c \
tests/elementary/elm_test_player.c \
tests/elementary/elm_test_bg.c \
tests/elementary/elm_test_video.c \
tests/elementary/elm_test_segmentcontrol.c \
tests/elementary/elm_test_progressbar.c \
tests/elementary/elm_test_fileselector.c \
tests/elementary/elm_test_fileselector_button.c \
tests/elementary/elm_test_fileselector_entry.c \
tests/elementary/elm_test_hoversel.c \
tests/elementary/elm_test_multibuttonentry.c \
tests/elementary/elm_test_naviframe.c \
tests/elementary/elm_test_popup.c \
tests/elementary/elm_test_bubble.c \
tests/elementary/elm_test_clock.c \
tests/elementary/elm_test_conformant.c \
tests/elementary/elm_test_dayselector.c \
tests/elementary/elm_test_flipselector.c \
tests/elementary/elm_test_genlist.c \
tests/elementary/elm_test_hover.c \
tests/elementary/elm_test_index.c \
tests/elementary/elm_test_label.c \
tests/elementary/elm_test_panel.c \
tests/elementary/elm_test_panes.c \
tests/elementary/elm_test_slideshow.c \
tests/elementary/elm_test_spinner.c \
tests/elementary/elm_test_plug.c \
tests/elementary/elm_test_config.c \
tests/elementary/elm_code_file_test_load.c \
tests/elementary/elm_code_file_test_memory.c \
tests/elementary/elm_code_test_basic.c \
tests/elementary/elm_code_test_line.c \
tests/elementary/elm_code_test_parse.c \
tests/elementary/elm_code_test_syntax.c \
tests/elementary/elm_code_test_text.c \
tests/elementary/elm_code_test_indent.c \
tests/elementary/elm_code_test_widget.c \
tests/elementary/elm_code_test_widget_text.c \
tests/elementary/elm_code_test_widget_selection.c \
tests/elementary/elm_code_test_widget_undo.c \
tests/elementary/elm_test_widget_focus.c
tests_elementary_elm_suite_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-DPACKAGE_BUILD_DIR=\"$(abs_top_builddir)\" \
-DTESTS_BUILD_DIR=\"${top_builddir}/src/tests/elementary\" \
-DTESTS_SRC_DIR=\"${top_srcdir}/src/tests/elementary\" \
-DELM_IMAGE_DATA_DIR=\"${top_srcdir}/data/elementary\" \
-DELM_TEST_DATA_DIR=\"${abs_top_builddir}/data/elementary\" \
-DPACKAGE_DATA_DIR=\"${abs_top_builddir}/data/elementary\" \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-I$(top_builddir)/src/tests/elementary \
@CHECK_CFLAGS@ \
@ELEMENTARY_CFLAGS@
tests_elementary_elm_suite_LDADD = @CHECK_LIBS@ @USE_ELEMENTARY_LIBS@
tests_elementary_elm_suite_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
tests_elementary_efl_ui_suite_SOURCES = \
tests/elementary/suite_helpers.c \
tests/elementary/suite_helpers.h \
tests/elementary/efl_ui_suite.c \
tests/elementary/elm_test_init.c \
tests/elementary/efl_ui_test_atspi.c \
tests/elementary/efl_ui_test_focus_common.c \
tests/elementary/efl_ui_test_focus_common.h \
tests/elementary/efl_ui_test_focus.c \
tests/elementary/efl_ui_test_focus_sub.c \
tests/elementary/efl_ui_test_box.c \
tests/elementary/efl_ui_test_table.c \
tests/elementary/efl_ui_test_relative_layout.c \
tests/elementary/efl_ui_test_grid.c \
tests/elementary/efl_ui_test_image.c \
tests/elementary/efl_ui_test_image_zoomable.c \
tests/elementary/efl_ui_test_layout.c \
tests/elementary/efl_ui_test_widget.c \
tests/elementary/efl_ui_suite.h \
tests/elementary/efl_ui_model.c
tests_elementary_efl_ui_suite_CPPFLAGS = \
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
-DPACKAGE_BUILD_DIR=\"$(abs_top_builddir)\" \
-DTESTS_BUILD_DIR=\"${top_builddir}/src/tests/elementary\" \
-DTESTS_SRC_DIR=\"${top_srcdir}/src/tests/elementary\" \
-DELM_IMAGE_DATA_DIR=\"${top_srcdir}/data/elementary\" \
-DELM_TEST_DATA_DIR=\"${abs_top_builddir}/data/elementary\" \
-DPACKAGE_DATA_DIR=\"${abs_top_builddir}/data/elementary\" \
-I$(top_srcdir)/src/lib/elementary \
-I$(top_builddir)/src/lib/elementary \
-I$(top_builddir)/src/tests/elementary \
@CHECK_CFLAGS@ \
@ELEMENTARY_CFLAGS@
tests_elementary_efl_ui_suite_LDADD = @CHECK_LIBS@ @USE_ELEMENTARY_LIBS@
tests_elementary_efl_ui_suite_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
endif
if HAVE_LUA_BINDINGS
elementary_eolian_lua = $(elm_public_eolian_files:%.eo=%.eo.lua)
generated_elementary_lua_all = $(elementary_eolian_lua)
GENERATED_LUA_BINDINGS += $(generated_elementary_lua_all)
installed_elementaryluadir = $(datadir)/elua/modules/elementary
nodist_installed_elementarylua_DATA = $(generated_elementary_lua_all)
endif
if HAVE_JS
generated_elementary_js_bindings = $(elm_public_eolian_files:%.eo=%.eo.js.cc)
GENERATED_JS_BINDINGS += $(generated_elementary_js_bindings)
endif
if HAVE_CXX
elementary_eolian_cxx_hh = $(elm_public_eolian_files:%.eo=%.eo.hh)
elementary_eolian_cxx_impl_hh = $(elm_public_eolian_files:%.eo=%.eo.impl.hh)
endif
EXTRA_DIST2 += \
tests/elementary/elm_suite.h \
lib/elementary/Elementary_Options.h.in \
lib/elementary/elm_code_widget_text.c \
lib/elementary/elm_code_widget_undo.c
diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c
index 0119a66633..f705436627 100644
--- a/src/lib/elementary/elm_list.c
+++ b/src/lib/elementary/elm_list.c
@@ -1,3217 +1,3217 @@
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define EFL_ACCESS_SELECTION_PROTECTED
#define ELM_WIDGET_ITEM_PROTECTED
#define EFL_UI_L10N_PROTECTED
#include
#include "elm_priv.h"
#include "elm_widget_list.h"
#include "elm_interface_scrollable.h"
#define MY_CLASS ELM_LIST_CLASS
#define MY_CLASS_NAME "Elm_List"
#define MY_CLASS_NAME_LEGACY "elm_list"
#define ELM_LIST_SWIPE_TIME 0.4
static const char SIG_ACTIVATED[] = "activated";
static const char SIG_CLICKED_DOUBLE[] = "clicked,double";
static const char SIG_CLICKED_RIGHT[] = "clicked,right";
static const char SIG_SELECTED[] = "selected";
static const char SIG_UNSELECTED[] = "unselected";
static const char SIG_LONGPRESSED[] = "longpressed";
static const char SIG_EDGE_TOP[] = "edge,top";
static const char SIG_EDGE_BOTTOM[] = "edge,bottom";
static const char SIG_EDGE_LEFT[] = "edge,left";
static const char SIG_EDGE_RIGHT[] = "edge,right";
static const char SIG_SWIPE[] = "swipe";
static const char SIG_HIGHLIGHTED[] = "highlighted";
static const char SIG_UNHIGHLIGHTED[] = "unhighlighted";
static const char SIG_ITEM_FOCUSED[] = "item,focused";
static const char SIG_ITEM_UNFOCUSED[] = "item,unfocused";
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_ACTIVATED, ""},
{SIG_CLICKED_DOUBLE, ""},
{SIG_CLICKED_RIGHT, ""},
{SIG_SELECTED, ""},
{SIG_UNSELECTED, ""},
{SIG_LONGPRESSED, ""},
{SIG_EDGE_TOP, ""},
{SIG_EDGE_BOTTOM, ""},
{SIG_EDGE_LEFT, ""},
{SIG_EDGE_RIGHT, ""},
{SIG_SWIPE, ""},
{SIG_HIGHLIGHTED, ""},
{SIG_UNHIGHLIGHTED, ""},
{SIG_ITEM_FOCUSED, ""},
{SIG_ITEM_UNFOCUSED, ""},
{SIG_WIDGET_LANG_CHANGED, ""}, /**< handled by elm_widget */
{SIG_WIDGET_ACCESS_CHANGED, ""}, /**< handled by elm_widget */
{SIG_LAYOUT_FOCUSED, ""}, /**< handled by elm_layout */
{SIG_LAYOUT_UNFOCUSED, ""}, /**< handled by elm_layout */
{NULL, NULL}
};
static void _size_hints_changed_cb(void *, Evas *, Evas_Object *, void *);
static void _mouse_up_cb(void *, Evas *, Evas_Object *, void *);
static void _mouse_down_cb(void *, Evas *, Evas_Object *, void *);
static void _mouse_move_cb(void *, Evas *, Evas_Object *, void *);
static void _mouse_in_cb(void *, Evas *, Evas_Object *, void *);
static void _items_fix(Evas_Object *);
static Eina_Bool _key_action_move(Evas_Object *obj, const char *params);
static Eina_Bool _key_action_select(Evas_Object *obj, const char *params);
static Eina_Bool _key_action_escape(Evas_Object *obj, const char *params);
EOLIAN static void _elm_list_item_elm_widget_item_del_pre(Eo *eo_item EINA_UNUSED, Elm_List_Item_Data *item);
static const Elm_Action key_actions[] = {
{"move", _key_action_move},
{"select", _key_action_select},
{"escape", _key_action_escape},
{NULL, NULL}
};
static void
_items_safe_process(Eina_List *items, void (*process)(void* data, Elm_Object_Item *sel, Elm_List_Item_Data *it), void *data)
{
Elm_Object_Item *sel;
Eina_List *l;
Eina_Array walk;
eina_array_step_set(&walk, sizeof (walk), 4);
EINA_LIST_FOREACH(items, l, sel)
eina_array_push(&walk, efl_ref(sel));
while ((sel = eina_array_pop(&walk)))
{
if (efl_invalidated_get(sel)) goto noneed;
ELM_LIST_ITEM_DATA_GET(sel, it);
process(data, sel, it);
noneed:
efl_unref(sel);
}
eina_array_flush(&walk);
}
static Eina_Bool
_is_no_select(Elm_List_Item_Data *it)
{
ELM_LIST_DATA_GET_FROM_ITEM(it, sd);
if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
(sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY))
return EINA_TRUE;
return EINA_FALSE;
}
static void
_elm_list_item_efl_object_invalidate(Elm_Object_Item *eo_it, Elm_List_Item_Data *it)
{
ELM_LIST_DATA_GET_FROM_ITEM(it, sd);
if (sd->focused_item == eo_it)
sd->focused_item = NULL;
if (sd->last_focused_item == eo_it)
sd->last_focused_item = NULL;
if (sd->last_selected_item == eo_it)
sd->last_selected_item = NULL;
evas_object_event_callback_del_full
(VIEW(it), EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, it);
evas_object_event_callback_del_full
(VIEW(it), EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, it);
evas_object_event_callback_del_full
(VIEW(it), EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, it);
evas_object_event_callback_del_full
(VIEW(it), EVAS_CALLBACK_MOUSE_IN, _mouse_in_cb, it);
if (it->icon)
evas_object_event_callback_del_full
(it->icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_size_hints_changed_cb, WIDGET(it));
if (it->end)
evas_object_event_callback_del_full
(it->end, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_size_hints_changed_cb, WIDGET(it));
efl_invalidate(efl_super(eo_it, ELM_LIST_ITEM_CLASS));
}
static void
_elm_list_item_efl_object_destructor(Elm_Object_Item *eo_it, Elm_List_Item_Data *it)
{
ELM_SAFE_FREE(it->label, eina_stringshare_del);
ELM_SAFE_FREE(it->swipe_timer, ecore_timer_del);
ELM_SAFE_FREE(it->long_timer, ecore_timer_del);
ELM_SAFE_FREE(it->icon, evas_object_del);
ELM_SAFE_FREE(it->end, evas_object_del);
efl_destructor(efl_super(eo_it, ELM_LIST_ITEM_CLASS));
}
static Eina_Bool
_item_multi_select_up(Elm_List_Data *sd)
{
Elm_Object_Item *prev;
if (!sd->selected) return EINA_FALSE;
if (!sd->multi) return EINA_FALSE;
prev = elm_list_item_prev(sd->last_selected_item);
while (prev)
{
if (!elm_object_item_disabled_get(prev)) break;
prev = elm_list_item_prev(prev);
}
if (!prev) return EINA_TRUE;
if (elm_list_item_selected_get(prev))
{
elm_list_item_selected_set(sd->last_selected_item, EINA_FALSE);
sd->last_selected_item = prev;
}
else
{
elm_list_item_selected_set(prev, EINA_TRUE);
}
return EINA_TRUE;
}
static Eina_Bool
_item_multi_select_down(Elm_List_Data *sd)
{
Elm_Object_Item *next;
if (!sd->selected) return EINA_FALSE;
if (!sd->multi) return EINA_FALSE;
next = elm_list_item_next(sd->last_selected_item);
while (next)
{
if (!elm_object_item_disabled_get(next)) break;
next = elm_list_item_next(next);
}
if (!next) return EINA_TRUE;
if (elm_list_item_selected_get(next))
{
elm_list_item_selected_set(sd->last_selected_item, EINA_FALSE);
sd->last_selected_item = next;
}
else
{
elm_list_item_selected_set(next, EINA_TRUE);
}
return EINA_TRUE;
}
static Eina_Bool
_all_items_unselect(Elm_List_Data *sd)
{
if (!sd->selected) return EINA_FALSE;
while (sd->selected)
elm_list_item_selected_set
(sd->selected->data, EINA_FALSE);
return EINA_TRUE;
}
static Eina_Bool
_item_single_select_up(Elm_List_Data *sd)
{
Elm_Object_Item *prev;
if (!sd->selected)
prev = eina_list_data_get(eina_list_last(sd->items));
else
prev = elm_list_item_prev(sd->last_selected_item);
while (prev)
{
if (!elm_object_item_disabled_get(prev)) break;
prev = elm_list_item_prev(prev);
}
if (!prev) return EINA_FALSE;
_all_items_unselect(sd);
elm_list_item_selected_set(prev, EINA_TRUE);
return EINA_TRUE;
}
static Eina_Bool
_item_single_select_down(Elm_List_Data *sd)
{
Elm_Object_Item *next;
if (!sd->selected)
next = eina_list_data_get(sd->items);
else
next = elm_list_item_next(sd->last_selected_item);
while (next)
{
if (!elm_object_item_disabled_get(next)) break;
next = elm_list_item_next(next);
}
if (!next) return EINA_FALSE;
_all_items_unselect(sd);
elm_list_item_selected_set(next, EINA_TRUE);
return EINA_TRUE;
}
static Eina_Bool
_elm_list_item_content_focus_set(Elm_List_Item_Data *it, Elm_Focus_Direction dir,
Eina_Bool h_mode)
{
if (!it) return EINA_FALSE;
ELM_LIST_DATA_GET_FROM_ITEM(it, sd);
if (!sd->focus_on_selection_enabled) return EINA_FALSE;
if ((h_mode && (dir != ELM_FOCUS_UP) && (dir != ELM_FOCUS_DOWN)) ||
(!h_mode && (dir != ELM_FOCUS_LEFT) && (dir != ELM_FOCUS_RIGHT)))
return EINA_FALSE;
int focus_objs = 0;
Evas_Object *focus_chain[2];
Evas_Object *focused = NULL;
int idx;
if (it->icon && elm_object_widget_check(it->icon) && elm_object_focus_allow_get(it->icon))
focus_chain[focus_objs++] = it->icon;
if (it->end && elm_object_widget_check(it->end) && elm_object_focus_allow_get(it->end))
focus_chain[focus_objs++] = it->end;
if (!focus_objs)
return EINA_FALSE;
for (idx = 0; idx < focus_objs; idx++)
{
if (elm_object_focus_get(focus_chain[idx]))
{
focused = focus_chain[idx];
break;
}
}
if (!focused)
{
elm_object_focus_set(focus_chain[0], EINA_TRUE);
return EINA_TRUE;
}
/* FOCUS-FIXME
if (dir != ELM_FOCUS_PREVIOUS)
{
Evas_Object *nextfocus;
Elm_Object_Item *nextfocus_item;
if (efl_ui_widget_focus_next_get(focused, dir, &nextfocus, &nextfocus_item))
{
if (nextfocus_item)
elm_object_item_focus_set(nextfocus_item, EINA_TRUE);
else
elm_object_focus_set(nextfocus, EINA_TRUE);
return EINA_TRUE;
}
idx += ((dir == ELM_FOCUS_UP) || (dir == ELM_FOCUS_LEFT)) ? -1 : 1;
if (idx < 0) idx = focus_objs - 1;
if (idx >= focus_objs) idx = 0;
focused = focus_chain[idx];
}
*/
elm_object_focus_set(focused, EINA_TRUE);
return EINA_TRUE;
}
static Elm_Object_Item *
_next_item_get(Elm_List_Data *sd, Elm_Object_Item *eo_cur, Elm_Focus_Direction dir)
{
Eina_List *list = NULL;
Elm_Object_Item *eo_it = NULL;
list = eina_list_data_find_list(sd->items, eo_cur);
if (!list) return NULL;
if ((!sd->h_mode && (dir == ELM_FOCUS_UP)) ||
((sd->h_mode) && (dir == ELM_FOCUS_LEFT)))
eo_it = eina_list_data_get(eina_list_prev(list));
else if (((!sd->h_mode) && (dir == ELM_FOCUS_DOWN)) ||
((sd->h_mode) && (dir == ELM_FOCUS_RIGHT)))
eo_it = eina_list_data_get(eina_list_next(list));
return eo_it;
}
static Eina_Bool
_item_focused_next(Evas_Object *obj, Elm_Focus_Direction dir)
{
ELM_LIST_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE);
Elm_Object_Item *eo_it = NULL;
if (sd->focused_item)
eo_it = _next_item_get(sd, sd->focused_item, dir);
while (eo_it &&
elm_object_item_disabled_get(eo_it))
{
eo_it = _next_item_get(sd, eo_it, dir);
}
if (eo_it)
{
elm_object_item_focus_set(eo_it, EINA_TRUE);
return EINA_TRUE;
}
return EINA_FALSE;
}
static Eina_Bool
_elm_list_efl_ui_widget_event_direction(Evas_Object *obj, Elm_Focus_Direction dir, Eina_Bool multi)
{
Elm_Object_Item *eo_it = NULL;
ELM_LIST_DATA_GET(obj, sd);
Eina_Bool ret = EINA_FALSE;
Evas_Coord v = 0;
Evas_Coord min = 0;
Eina_Bool focus_only = EINA_FALSE;
// check if the content can get the focus by direction key
ELM_LIST_ITEM_DATA_GET(elm_object_focused_item_get(obj) , it);
if (_elm_list_item_content_focus_set(it, dir, sd->h_mode))
return EINA_TRUE;
if ((sd->h_mode && (dir != ELM_FOCUS_LEFT) && (dir != ELM_FOCUS_RIGHT)) ||
(!sd->h_mode && (dir != ELM_FOCUS_UP) && (dir != ELM_FOCUS_DOWN)))
return EINA_FALSE;
// check if list get focus at first
focus_only = _elm_config->item_select_on_focus_disable;
if (!sd->focused_item)
{
if ((dir == ELM_FOCUS_LEFT) || (dir == ELM_FOCUS_UP))
eo_it = elm_list_last_item_get(obj);
else
eo_it = elm_list_first_item_get(obj);
if (focus_only)
elm_object_item_focus_set(eo_it, EINA_TRUE);
else
elm_list_item_selected_set(eo_it, EINA_TRUE);
return EINA_TRUE;
}
// get content size and viewport size
if ((dir == ELM_FOCUS_LEFT) || (dir == ELM_FOCUS_RIGHT))
{
elm_interface_scrollable_content_viewport_geometry_get
(obj, NULL, NULL, &v, NULL);
elm_interface_scrollable_content_size_get(obj, &min, NULL);
}
else
{
elm_interface_scrollable_content_viewport_geometry_get
(obj, NULL, NULL, NULL, &v);
elm_interface_scrollable_content_size_get(obj, NULL, &min);
}
// move focus or selection according to the configuration
if (focus_only)
ret = _item_focused_next(obj, dir);
else
{
if (multi)
{
if ((dir == ELM_FOCUS_LEFT) || (dir == ELM_FOCUS_UP))
ret = _item_multi_select_up(sd);
else
ret = _item_multi_select_down(sd);
}
else
{
if ((dir == ELM_FOCUS_LEFT) || (dir == ELM_FOCUS_UP))
ret = _item_single_select_up(sd);
else
ret = _item_single_select_down(sd);
}
}
if (ret)
return EINA_TRUE;
// handle item loop feature
if (sd->item_loop_enable && !sd->item_looping_on)
{
if (min > v)
{
if (dir == ELM_FOCUS_LEFT)
{
elm_layout_signal_emit(obj, "elm,action,looping,left", "elm");
sd->item_looping_on = EINA_TRUE;
}
else if (dir == ELM_FOCUS_RIGHT)
{
elm_layout_signal_emit(obj, "elm,action,looping,right", "elm");
sd->item_looping_on = EINA_TRUE;
}
else if (dir == ELM_FOCUS_UP)
{
elm_layout_signal_emit(obj, "elm,action,looping,up", "elm");
sd->item_looping_on = EINA_TRUE;
}
else if (dir == ELM_FOCUS_DOWN)
{
elm_layout_signal_emit(obj, "elm,action,looping,down", "elm");
sd->item_looping_on = EINA_TRUE;
}
}
else
{
if ((dir == ELM_FOCUS_LEFT) || (dir == ELM_FOCUS_UP))
eo_it = elm_list_last_item_get(obj);
else
eo_it = elm_list_first_item_get(obj);
if (focus_only)
elm_object_item_focus_set(eo_it, EINA_TRUE);
else
elm_list_item_selected_set(eo_it, EINA_TRUE);
}
return EINA_TRUE;
}
else if (sd->item_looping_on)
return EINA_TRUE;
return EINA_FALSE;
}
static Eina_Bool _key_action_move(Evas_Object *obj, const char *params)
{
ELM_LIST_DATA_GET(obj, sd);
const char *dir = params;
Evas_Coord x = 0;
Evas_Coord y = 0;
Evas_Coord v_w = 0;
Evas_Coord v_h = 0;
Evas_Coord step_x = 0;
Evas_Coord step_y = 0;
Evas_Coord page_x = 0;
Evas_Coord page_y = 0;
Elm_Object_Item *it = NULL;
if (!sd->items) return EINA_FALSE;
elm_interface_scrollable_content_pos_get(obj, &x, &y);
elm_interface_scrollable_step_size_get(obj, &step_x, &step_y);
elm_interface_scrollable_page_size_get(obj, &page_x, &page_y);
elm_interface_scrollable_content_viewport_geometry_get
(obj, NULL, NULL, &v_w, &v_h);
_elm_widget_focus_auto_show(obj);
/* TODO: fix logic for horizontal mode */
if (!strcmp(dir, "left"))
{
if (_elm_list_efl_ui_widget_event_direction(obj, ELM_FOCUS_LEFT, EINA_FALSE))
return EINA_TRUE;
else
return EINA_FALSE;
}
else if (!strcmp(dir, "left_multi"))
{
if (_elm_list_efl_ui_widget_event_direction(obj, ELM_FOCUS_LEFT, EINA_TRUE))
return EINA_TRUE;
else
return EINA_FALSE;
}
else if (!strcmp(dir, "right"))
{
if (_elm_list_efl_ui_widget_event_direction(obj, ELM_FOCUS_RIGHT, EINA_FALSE))
return EINA_TRUE;
else
return EINA_FALSE;
}
else if (!strcmp(dir, "right_multi"))
{
if (_elm_list_efl_ui_widget_event_direction(obj, ELM_FOCUS_RIGHT, EINA_TRUE))
return EINA_TRUE;
else
return EINA_FALSE;
}
else if (!strcmp(dir, "up"))
{
if (_elm_list_efl_ui_widget_event_direction(obj, ELM_FOCUS_UP, EINA_FALSE))
return EINA_TRUE;
else
return EINA_FALSE;
}
else if (!strcmp(dir, "up_multi"))
{
if (_elm_list_efl_ui_widget_event_direction(obj, ELM_FOCUS_UP, EINA_TRUE))
return EINA_TRUE;
else
return EINA_FALSE;
}
else if (!strcmp(dir, "down"))
{
if (_elm_list_efl_ui_widget_event_direction(obj, ELM_FOCUS_DOWN, EINA_FALSE))
return EINA_TRUE;
else
return EINA_FALSE;
}
else if (!strcmp(dir, "down_multi"))
{
if (_elm_list_efl_ui_widget_event_direction(obj, ELM_FOCUS_DOWN, EINA_TRUE))
return EINA_TRUE;
else
return EINA_FALSE;
}
else if (!strcmp(dir, "first"))
{
it = eina_list_data_get(sd->items);
if (it)
{
elm_list_item_selected_set(it, EINA_TRUE);
return EINA_TRUE;
}
else
return EINA_FALSE;
}
else if (!strcmp(dir, "last"))
{
it = eina_list_data_get(eina_list_last(sd->items));
if (it)
{
elm_list_item_selected_set(it, EINA_TRUE);
return EINA_TRUE;
}
else
return EINA_FALSE;
}
else if (!strcmp(dir, "prior"))
{
if (sd->h_mode)
{
if (page_x < 0)
x -= -(page_x * v_w) / 100;
else
x -= page_x;
}
else
{
if (page_y < 0)
y -= -(page_y * v_h) / 100;
else
y -= page_y;
}
}
else if (!strcmp(dir, "next"))
{
if (sd->h_mode)
{
if (page_x < 0)
x += -(page_x * v_w) / 100;
else
x += page_x;
}
else
{
if (page_y < 0)
y += -(page_y * v_h) / 100;
else
y += page_y;
}
}
else return EINA_FALSE;
elm_interface_scrollable_content_pos_set(obj, x, y, EINA_TRUE);
return EINA_TRUE;
}
static Eina_Bool _key_action_select(Evas_Object *obj, const char *params EINA_UNUSED)
{
ELM_LIST_DATA_GET(obj, sd);
Elm_Object_Item *eo_it = NULL;
if (!sd->items) return EINA_FALSE;
if (!_elm_config->item_select_on_focus_disable &&
(!sd->multi) && (sd->selected))
eo_it = elm_list_selected_item_get(obj);
else
eo_it = elm_object_focused_item_get(obj);
elm_list_item_selected_set(eo_it, EINA_TRUE);
if (eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
efl_event_callback_legacy_call
(WIDGET(it), ELM_LIST_EVENT_ACTIVATED, eo_it);
}
return EINA_TRUE;
}
static Eina_Bool _key_action_escape(Evas_Object *obj, const char *params EINA_UNUSED)
{
ELM_LIST_DATA_GET(obj, sd);
if (!sd->items) return EINA_FALSE;
if (!_all_items_unselect(sd)) return EINA_FALSE;
return EINA_TRUE;
}
EOLIAN static void
_elm_list_efl_ui_l10n_translation_update(Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
Elm_Object_Item *it;
Eina_List *l;
EINA_LIST_FOREACH(sd->items, l, it)
elm_wdg_item_translate(it);
efl_ui_l10n_translation_update(efl_super(obj, MY_CLASS));
}
EOLIAN static void
_elm_list_elm_layout_sizing_eval(Eo *obj, Elm_List_Data *sd)
{
Evas_Coord vw = 0, vh = 0;
Evas_Coord minw = 0, minh = 0, maxw = 0, maxh = 0, w = 0, h = 0, vmw = 0, vmh = 0;
double xw = 0.0, yw = 0.0;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
if (!efl_finalized_get(obj)) return; //not constructed yet
evas_object_size_hint_combined_min_get(sd->box, &minw, &minh);
evas_object_size_hint_max_get(sd->box, &maxw, &maxh);
evas_object_size_hint_weight_get(sd->box, &xw, &yw);
elm_interface_scrollable_content_viewport_geometry_get
(obj, NULL, NULL, &vw, &vh);
if (xw > 0.0)
{
if ((minw > 0) && (vw < minw)) vw = minw;
else if ((maxw > 0) && (vw > maxw))
vw = maxw;
}
else if (minw > 0)
vw = minw;
if (yw > 0.0)
{
if ((minh > 0) && (vh < minh)) vh = minh;
else if ((maxh > 0) && (vh > maxh))
vh = maxh;
}
else if (minh > 0)
vh = minh;
evas_object_resize(sd->box, vw, vh);
w = -1;
h = -1;
edje_object_size_min_calc
(wd->resize_obj, &vmw, &vmh);
if (sd->scr_minw) w = vmw + minw;
if (sd->scr_minh) h = vmh + minh;
evas_object_size_hint_max_get(obj, &maxw, &maxh);
if ((maxw > 0) && (w > maxw))
w = maxw;
if ((maxh > 0) && (h > maxh))
h = maxh;
evas_object_size_hint_min_set(obj, w, h);
}
static void
_elm_list_content_min_limit_cb(Evas_Object *obj,
Eina_Bool w,
Eina_Bool h)
{
ELM_LIST_DATA_GET(obj, sd);
if ((sd->mode == ELM_LIST_LIMIT) ||
(sd->mode == ELM_LIST_EXPAND)) return;
sd->scr_minw = !!w;
sd->scr_minh = !!h;
elm_layout_sizing_eval(obj);
}
static void
_elm_list_mode_set_internal(Evas_Object *obj)
{
Elm_List_Data *sd = efl_data_scope_get(obj, MY_CLASS);
if (sd->mode == ELM_LIST_LIMIT)
{
if (!sd->h_mode)
{
sd->scr_minw = EINA_TRUE;
sd->scr_minh = EINA_FALSE;
}
else
{
sd->scr_minw = EINA_FALSE;
sd->scr_minh = EINA_TRUE;
}
}
else if (sd->mode == ELM_LIST_EXPAND)
{
sd->scr_minw = EINA_TRUE;
sd->scr_minh = EINA_TRUE;
}
else if (sd->mode == ELM_LIST_COMPRESS)
{
sd->scr_minw = EINA_FALSE;
sd->scr_minh = EINA_FALSE;
}
elm_layout_sizing_eval(obj);
}
static inline void
_elm_list_walk(Evas_Object *obj, Elm_List_Data *sd)
{
if (sd->walking < 0)
{
ERR("ERROR: walking was negative. fixed!\n");
sd->walking = 0;
}
sd->walking++;
efl_ref(obj);
evas_object_ref(obj);
}
static inline void
_elm_list_unwalk(Evas_Object *obj, Elm_List_Data *sd)
{
sd->walking--;
if (sd->walking < 0)
{
ERR("ERROR: walking became negative. fixed!\n");
sd->walking = 0;
}
if (sd->walking)
goto cleanup;
if (sd->fix_pending)
{
sd->fix_pending = EINA_FALSE;
_items_fix(obj);
elm_layout_sizing_eval(obj);
}
cleanup:
evas_object_unref(obj);
efl_unref(obj);
}
static void
_items_fix(Evas_Object *obj)
{
Evas_Coord minw[2] = { 0, 0 }, minh[2] = { 0, 0 };
const Eina_List *l;
Elm_Object_Item *eo_it;
Evas_Coord mw, mh;
int i, redo = 0;
Eina_Array walk;
const char *style;
const char *it_odd;
const char *it_plain;
const char *it_compress;
const char *it_compress_odd;
ELM_LIST_DATA_GET(obj, sd);
style = elm_widget_style_get(obj);
it_plain = sd->h_mode ? "h_item" : "item";
it_odd = sd->h_mode ? "h_item_odd" : "item_odd";
it_compress = sd->h_mode ? "h_item_compress" : "item_compress";
it_compress_odd = sd->h_mode ? "h_item_compress_odd" : "item_compress_odd";
if (sd->walking)
{
sd->fix_pending = EINA_TRUE;
return;
}
_elm_list_walk(obj, sd); // watch out "return" before unwalk!
sd->fixing_now = EINA_TRUE;
eina_array_step_set(&walk, sizeof (walk), 8);
EINA_LIST_FOREACH(sd->items, l, eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
if (!it) continue;
if (it->deleted) continue;
if (it->icon)
{
evas_object_size_hint_combined_min_get(it->icon, &mw, &mh);
if (mw > minw[0]) minw[0] = mw;
if (mh > minh[0]) minh[0] = mh;
}
if (it->end)
{
evas_object_size_hint_combined_min_get(it->end, &mw, &mh);
if (mw > minw[1]) minw[1] = mw;
if (mh > minh[1]) minh[1] = mh;
}
eina_array_push(&walk, efl_ref(eo_it));
}
if ((minw[0] != sd->minw[0]) || (minw[1] != sd->minw[1]) ||
(minh[0] != sd->minh[0]) || (minh[1] != sd->minh[1]))
{
sd->minw[0] = minw[0];
sd->minw[1] = minw[1];
sd->minh[0] = minh[0];
sd->minh[1] = minh[1];
redo = 1;
}
i = 0;
while ((eo_it = eina_array_pop(&walk)))
{
if (efl_invalidated_get(eo_it)) goto noneed;
ELM_LIST_ITEM_DATA_GET(eo_it, it);
if (!it) goto noneed;
if (it->deleted) goto noneed;
it->even = i & 0x1;
if ((it->even != it->is_even) || (!it->fixed) || (redo))
{
const char *stacking;
if (it->is_separator)
elm_widget_theme_object_set
(obj, VIEW(it), "separator", sd->h_mode ?
"vertical" : "horizontal", style);
else if (sd->mode == ELM_LIST_COMPRESS)
{
if (it->even)
elm_widget_theme_object_set
(obj, VIEW(it), "list", it_compress, style);
else
elm_widget_theme_object_set
(obj, VIEW(it), "list", it_compress_odd, style);
}
else
{
if (it->even)
elm_widget_theme_object_set
(obj, VIEW(it), "list", it_plain, style);
else
elm_widget_theme_object_set
(obj, VIEW(it), "list", it_odd, style);
}
stacking = edje_object_data_get(VIEW(it), "stacking");
if (stacking)
{
if (!strcmp(stacking, "below"))
evas_object_lower(VIEW(it));
else if (!strcmp(stacking, "above"))
evas_object_raise(VIEW(it));
}
if (!it->is_separator)
{
edje_object_part_text_escaped_set
(VIEW(it), "elm.text", it->label);
elm_wdg_item_part_text_custom_update(EO_OBJ(it));
if ((!it->icon) && (minh[0] > 0))
{
it->icon = evas_object_rectangle_add
(evas_object_evas_get(VIEW(it)));
evas_object_color_set(it->icon, 0, 0, 0, 0);
it->dummy_icon = EINA_TRUE;
}
if ((!it->end) && (minh[1] > 0))
{
it->end = evas_object_rectangle_add
(evas_object_evas_get(VIEW(it)));
evas_object_color_set(it->end, 0, 0, 0, 0);
it->dummy_end = EINA_TRUE;
}
if (eina_list_count(sd->items) == 1)
{
edje_object_signal_emit
(VIEW(it), "elm,state,list,single", "elm");
}
else if (l == sd->items) //1st item
{
edje_object_signal_emit
(VIEW(it), "elm,state,list,first", "elm");
}
else if (l == eina_list_last(sd->items))
{
edje_object_signal_emit
(VIEW(it), "elm,state,list,last", "elm");
}
else
{
edje_object_signal_emit
(VIEW(it), "elm,state,list,middle", "elm");
}
}
if (!it->fixed)
{
// this may call up user and it may modify the list item
// but we're safe as we're flagged as walking.
// just don't process further
edje_object_message_signal_process(VIEW(it));
if (it->deleted) goto noneed;
mw = mh = -1;
if (!it->is_separator)
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
edje_object_size_min_restricted_calc
(VIEW(it), &mw, &mh, mw, mh);
/*
FIXME: this fixed T179 but introduced T286.
Temporarily disable these lines until it gets fixed correctly.
Evas_Coord ew, eh;
edje_object_parts_extends_calc
(VIEW(it), NULL, NULL, &ew, &eh);
mw = mw > ew ? mw : ew;
mh = mh > eh ? mh : eh;
*/
evas_object_size_hint_min_set(VIEW(it), mw, mh);
evas_object_show(VIEW(it));
}
if ((it->selected) || (it->highlighted))
{
const char *select_raise;
// this may call up user and it may modify the list item
// but we're safe as we're flagged as walking.
// just don't process further
edje_object_signal_emit
(VIEW(it), "elm,state,selected", "elm");
if (it->deleted) goto noneed;
select_raise = edje_object_data_get(VIEW(it), "selectraise");
if ((select_raise) && (!strcmp(select_raise, "on")))
evas_object_raise(VIEW(it));
}
if (it->base->disabled)
edje_object_signal_emit(VIEW(it), "elm,state,disabled", "elm");
it->fixed = EINA_TRUE;
it->is_even = it->even;
}
if (it->icon)
{
evas_object_size_hint_min_set(it->icon, minw[0], minh[0]);
edje_object_part_swallow
(VIEW(it), "elm.swallow.icon", it->icon);
}
if (it->end)
{
evas_object_size_hint_min_set(it->end, minw[1], minh[1]);
edje_object_part_swallow
(VIEW(it), "elm.swallow.end", it->end);
}
if (!it->is_separator)
i++;
noneed:
efl_unref(eo_it);
}
sd->fixing_now = EINA_FALSE;
_elm_list_unwalk(obj, sd);
//focus highlight in_theme is set by list item theme.
_elm_widget_item_highlight_in_theme(
obj, elm_list_first_item_get(obj));
}
static void
_size_hints_changed_cb(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj,
void *event_info EINA_UNUSED)
{
ELM_LIST_DATA_GET(data, sd);
ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
if (sd->delete_me) return;
/* FIXME: Looks it updates items_fix() unnecessarily.
when resize_obj, box finished sizing, then
it can call _items_fix() one time at the end. */
if (sd->fixing_now)
{
if ((obj != wd->resize_obj) && (obj != sd->box)) return;
}
_items_fix(data);
elm_layout_sizing_eval(data);
}
/* FIXME: take off later. maybe this show region coords belong in the
* interface (new api functions, set/get)? */
static void
_show_region_hook(void *data EINA_UNUSED, Evas_Object *obj, Eina_Rect r)
{
elm_interface_scrollable_content_region_set(obj, r.x, r.y, r.w, r.h);
}
EOLIAN static void
_elm_list_efl_ui_widget_disabled_set(Eo *obj, Elm_List_Data *sd, Eina_Bool disabled)
{
efl_ui_widget_disabled_set(efl_super(obj, MY_CLASS), disabled);
if (efl_ui_widget_disabled_get(obj))
{
elm_widget_scroll_freeze_push(obj);
elm_widget_scroll_hold_push(obj);
/* FIXME: if we get to have a way to only un-highlight items
* in the future, keeping them selected... */
_all_items_unselect(sd);
}
else
{
elm_widget_scroll_freeze_pop(obj);
elm_widget_scroll_hold_pop(obj);
}
}
static void
_mirrored_set(Evas_Object *obj,
Eina_Bool rtl)
{
Elm_Object_Item *eo_it;
Eina_List *n;
ELM_LIST_DATA_GET(obj, sd);
efl_ui_mirrored_set(obj, rtl);
EINA_LIST_FOREACH(sd->items, n, eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
edje_object_mirrored_set(VIEW(it), rtl);
}
}
EOLIAN static Eina_Error
_elm_list_efl_ui_widget_theme_apply(Eo *obj, Elm_List_Data *sd)
{
Elm_Object_Item *eo_it;
Eina_List *n;
Eina_Error int_ret = EFL_UI_THEME_APPLY_ERROR_GENERIC;
int_ret = efl_ui_widget_theme_apply(efl_super(obj, MY_CLASS));
if (int_ret == EFL_UI_THEME_APPLY_ERROR_GENERIC) return int_ret;
_mirrored_set(obj, efl_ui_mirrored_get(obj));
EINA_LIST_FOREACH(sd->items, n, eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
edje_object_scale_set
(VIEW(it), efl_gfx_entity_scale_get(obj) * elm_config_scale_get());
it->fixed = EINA_FALSE;
}
_items_fix(obj);
elm_layout_sizing_eval(obj);
return int_ret;
}
static void
_elm_list_item_focused(Elm_Object_Item *eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
ELM_LIST_DATA_GET_FROM_ITEM(it, sd);
Evas_Object *win = elm_widget_top_get(WIDGET(it));
Evas_Coord x, y, w, h, sx, sy, sw, sh;
const char *focus_raise;
if ((!sd) || _is_no_select(it) ||
(eo_it == sd->focused_item))
return;
evas_object_geometry_get(VIEW(it), &x, &y, &w, &h);
evas_object_geometry_get(sd->hit_rect, &sx, &sy, &sw, &sh);
if (!ELM_RECTS_INCLUDE(sx, sy, sw, sh, x, y, w, h))
{
switch (_elm_config->focus_autoscroll_mode)
{
case ELM_FOCUS_AUTOSCROLL_MODE_SHOW:
elm_list_item_show(eo_it);
break;
case ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN:
elm_list_item_bring_in(eo_it);
break;
default:
break;
}
}
sd->focused_item = eo_it;
if (elm_win_focus_highlight_enabled_get(win) || _elm_config->win_auto_focus_enable)
{
edje_object_signal_emit
(VIEW(it), "elm,state,focused", "elm");
}
focus_raise = edje_object_data_get(VIEW(it), "focusraise");
if ((focus_raise) && (!strcmp(focus_raise, "on")))
evas_object_raise(VIEW(it));
efl_event_callback_legacy_call
(WIDGET(it), ELM_LIST_EVENT_ITEM_FOCUSED, eo_it);
if (_elm_config->atspi_mode)
efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_TRUE);
}
static void
_elm_list_item_unfocused(Elm_Object_Item *eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
Evas_Object *obj = WIDGET(it);
Evas_Object *win = elm_widget_top_get(obj);
ELM_LIST_DATA_GET(obj, sd);
if ((!sd) || (!sd->focused_item) ||
(eo_it != sd->focused_item))
return;
if (_is_no_select(it))
return;
if (elm_win_focus_highlight_enabled_get(win) || _elm_config->win_auto_focus_enable)
{
ELM_LIST_ITEM_DATA_GET(sd->focused_item, focus_it);
edje_object_signal_emit
(VIEW(focus_it), "elm,state,unfocused", "elm");
}
sd->focused_item = NULL;
efl_event_callback_legacy_call(obj, ELM_LIST_EVENT_ITEM_UNFOCUSED, eo_it);
if (_elm_config->atspi_mode)
efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_FOCUSED, EINA_FALSE);
}
/*
* This function searches the nearest visible item based on the given item.
* If the given item is in the list viewport, this returns the given item.
* Or this searches other items and checks the nearest fully visible item
* according to the given item's position.
*/
static Elm_List_Item_Data *
_elm_list_nearest_visible_item_get(Evas_Object *obj, Elm_List_Item_Data *it)
{
Evas_Coord vx = 0, vy = 0, vw = 0, vh = 0; // list viewport geometry
Evas_Coord ix = 0, iy = 0, iw = 0, ih = 0; // given item geometry
Evas_Coord cx = 0, cy = 0, cw = 0, ch = 0; // candidate item geometry
Eina_List *item_list = NULL;
Elm_List_Item_Data *item = NULL;
ELM_LIST_DATA_GET(obj, sd);
Eina_Bool search_next = EINA_FALSE;
if (!it) return NULL;
evas_object_geometry_get(obj, &vx, &vy, &vw, &vh);
evas_object_geometry_get(VIEW(it), &ix, &iy, &iw, &ih);
if (ELM_RECTS_INCLUDE(vx, vy, vw, vh, ix, iy, iw, ih))
{
if (!elm_object_item_disabled_get(EO_OBJ(it)))
return it;
else
search_next = EINA_TRUE;
}
item_list = eina_list_data_find_list(sd->items, EO_OBJ(it));
if ((!sd->h_mode && (iy < vy)) ||
(sd->h_mode && (iw < vw)) ||
search_next)
{
while ((item_list = eina_list_next(item_list)))
{
item = efl_data_scope_get(eina_list_data_get(item_list), ELM_LIST_ITEM_CLASS);
if (!item) continue;
evas_object_geometry_get(VIEW(item), &cx, &cy, &cw, &ch);
if (ELM_RECTS_INCLUDE(vx, vy, vw, vh, cx, cy, cw, ch) &&
!elm_object_item_disabled_get(EO_OBJ(item)))
{
return item;
}
}
}
else
{
while ((item_list = eina_list_prev(item_list)))
{
item = efl_data_scope_get(eina_list_data_get(item_list), ELM_LIST_ITEM_CLASS);
if (!item) continue;
evas_object_geometry_get(VIEW(item), &cx, &cy, &cw, &ch);
if (ELM_RECTS_INCLUDE(vx, vy, vw, vh, cx, cy, cw, ch) &&
!elm_object_item_disabled_get(EO_OBJ(item)))
{
return item;
}
}
}
return it;
}
EOLIAN static Eina_Bool
_elm_list_efl_ui_focus_object_on_focus_update(Eo *obj, Elm_List_Data *sd)
{
Eina_Bool int_ret = EINA_FALSE;
Elm_Object_Item *eo_it = NULL;
Eina_Bool is_sel = EINA_FALSE;
int_ret = efl_ui_focus_object_on_focus_update(efl_super(obj, MY_CLASS));
if (!int_ret) return EINA_FALSE;
if (elm_object_focus_get(obj) && sd->selected && !sd->last_selected_item)
{
Elm_Object_Item *sel = eina_list_data_get(sd->selected);
sd->last_selected_item = efl_data_scope_get(sel, ELM_LIST_ITEM_CLASS);
}
if (!sd->items) return EINA_FALSE;
if (elm_object_focus_get(obj) && !sd->mouse_down)
{
if (sd->last_focused_item)
eo_it = sd->last_focused_item;
else if (sd->last_selected_item)
eo_it = sd->last_selected_item;
else if (_elm_config->first_item_focus_on_first_focus_in)
{
eo_it = elm_list_first_item_get(obj);
is_sel = EINA_TRUE;
}
if (eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
it = _elm_list_nearest_visible_item_get(obj, it);
if (it)
{
if (!_elm_config->item_select_on_focus_disable && is_sel)
elm_list_item_selected_set(EO_OBJ(it), EINA_TRUE);
else
_elm_list_item_focused(EO_OBJ(it));
}
}
}
else
{
sd->last_focused_item = sd->focused_item;
if (sd->focused_item)
_elm_list_item_unfocused(sd->focused_item);
}
return EINA_TRUE;
}
EOLIAN static Eina_Bool
_elm_list_efl_ui_widget_widget_sub_object_del(Eo *obj, Elm_List_Data *sd, Evas_Object *sobj)
{
const Eina_List *l;
Elm_Object_Item *eo_it;
Eina_Bool int_ret = EINA_FALSE;
int_ret = elm_widget_sub_object_del(efl_super(obj, MY_CLASS), sobj);
if (!int_ret) return EINA_FALSE;
if ((sobj == sd->box) || (sobj == obj)) goto end;
EINA_LIST_FOREACH(sd->items, l, eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
if ((sobj == it->icon) || (sobj == it->end))
{
if (it->icon == sobj) it->icon = NULL;
if (it->end == sobj) it->end = NULL;
evas_object_event_callback_del_full
(sobj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb,
obj);
efl_del(eo_it);
if (!sd->walking && efl_parent_get(obj))
{
_items_fix(obj);
elm_layout_sizing_eval(obj);
}
else
sd->fix_pending = EINA_TRUE;
break;
}
}
end:
return EINA_TRUE;
}
static void
_item_highlight(Elm_List_Item_Data *it)
{
Elm_Object_Item *eo = EO_OBJ(it);
Evas_Object *obj;
const char *select_raise;
if (efl_invalidated_get(eo)) return ;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
if (_is_no_select(it) ||
(it->highlighted) || (it->base->disabled))
return;
efl_ref(EO_OBJ(it));
// This is done to delay the update of a theme change if items_fix get called
_elm_list_walk(obj, sd);
edje_object_signal_emit(VIEW(it), "elm,state,selected", "elm");
efl_event_callback_legacy_call(obj, ELM_LIST_EVENT_HIGHLIGHTED, EO_OBJ(it));
select_raise = edje_object_data_get(VIEW(it), "selectraise");
if ((select_raise) && (!strcmp(select_raise, "on")))
evas_object_raise(VIEW(it));
it->highlighted = EINA_TRUE;
_elm_list_unwalk(obj, sd);
efl_unref(EO_OBJ(it));
}
static void
_item_select(Elm_List_Item_Data *it)
{
Elm_Object_Item *eo = EO_OBJ(it);
Evas_Object *obj;
if (efl_invalidated_get(eo)) return ;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
Elm_Object_Item *eo_it = EO_OBJ(it);
if (it->base->disabled || _is_no_select(it))
return;
if (!sd->focus_on_selection_enabled)
{
if (it->icon && elm_object_widget_check(it->icon) &&
elm_object_focus_get(it->icon))
{
elm_object_focus_set(obj, EINA_FALSE);
elm_object_focus_set(obj, EINA_TRUE);
}
else if (it->end && elm_object_widget_check(it->end) &&
elm_object_focus_get(it->end))
{
elm_object_focus_set(obj, EINA_FALSE);
elm_object_focus_set(obj, EINA_TRUE);
}
}
if (it->selected)
{
if (sd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS) goto call;
return;
}
_elm_list_item_content_focus_set(it, ELM_FOCUS_PREVIOUS, sd->h_mode);
it->selected = EINA_TRUE;
sd->selected = eina_list_append(sd->selected, eo_it);
call:
efl_ref(EO_OBJ(it));
_elm_list_walk(obj, sd);
if (it->func) it->func((void *)WIDGET_ITEM_DATA_GET(eo_it), WIDGET(it), eo_it);
efl_event_callback_legacy_call(obj, EFL_UI_EVENT_SELECTED, eo_it);
if (_elm_config->atspi_mode)
efl_access_state_changed_signal_emit(eo_it, EFL_ACCESS_STATE_TYPE_SELECTED, EINA_TRUE);
sd->last_selected_item = eo_it;
_elm_list_unwalk(obj, sd);
efl_unref(EO_OBJ(it));
}
static void
_item_unhighlight(Elm_List_Item_Data *it)
{
Elm_Object_Item *eo = EO_OBJ(it);
Evas_Object *obj;
const char *stacking, *select_raise;
if (efl_invalidated_get(eo)) return ;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
// if ((!it->highlighted) || (it->base->disabled) ||
// (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)) return;
if (!it->highlighted) return;
efl_ref(EO_OBJ(it));
_elm_list_walk(obj, sd);
edje_object_signal_emit(VIEW(it), "elm,state,unselected", "elm");
efl_event_callback_legacy_call
(obj, ELM_LIST_EVENT_UNHIGHLIGHTED, EO_OBJ(it));
stacking = edje_object_data_get(VIEW(it), "stacking");
select_raise = edje_object_data_get(VIEW(it), "selectraise");
if ((select_raise) && (!strcmp(select_raise, "on")))
{
if ((stacking) && (!strcmp(stacking, "below")))
evas_object_lower(VIEW(it));
}
it->highlighted = EINA_FALSE;
_elm_list_unwalk(obj, sd);
efl_unref(EO_OBJ(it));
}
static void
_item_unselect(Elm_List_Item_Data *it)
{
Elm_Object_Item *eo = EO_OBJ(it);
Evas_Object *obj;
if (efl_invalidated_get(eo)) return ;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
// if (it->base->disabled || (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
// return;
efl_ref(eo);
_elm_list_walk(obj, sd);
if (sd->focus_on_selection_enabled)
{
if (it->icon) elm_object_focus_set(it->icon, EINA_FALSE);
if (it->end) elm_object_focus_set(it->end, EINA_FALSE);
}
if (it->selected)
{
it->selected = EINA_FALSE;
sd->selected = eina_list_remove(sd->selected, EO_OBJ(it));
if (!(it->base->disabled ||
(sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)))
efl_event_callback_legacy_call
(WIDGET(it), EFL_UI_EVENT_UNSELECTED, EO_OBJ(it));
if (_elm_config->atspi_mode)
efl_access_state_changed_signal_emit(EO_OBJ(it), EFL_ACCESS_STATE_TYPE_SELECTED, EINA_FALSE);
}
_elm_list_unwalk(obj, sd);
efl_unref(eo);
}
static void
_process_item_unselected_set(void *data, Elm_Object_Item *sel, Elm_List_Item_Data *it)
{
if (sel == data) return ;
_item_unhighlight(it);
_item_unselect(it);
}
static Eina_Bool
_swipe_cancel(void *data)
{
Elm_List_Item_Data *it = data;
ELM_LIST_ITEM_CHECK_OR_RETURN(it, ECORE_CALLBACK_CANCEL);
ELM_LIST_DATA_GET_FROM_ITEM(it, sd);
sd->swipe = EINA_FALSE;
sd->movements = 0;
return ECORE_CALLBACK_RENEW;
}
static void
_edge_left_cb(Evas_Object *obj,
void *data EINA_UNUSED)
{
efl_event_callback_legacy_call(obj, ELM_LIST_EVENT_EDGE_LEFT, NULL);
}
static void
_edge_right_cb(Evas_Object *obj,
void *data EINA_UNUSED)
{
efl_event_callback_legacy_call(obj, ELM_LIST_EVENT_EDGE_RIGHT, NULL);
}
static void
_edge_top_cb(Evas_Object *obj,
void *data EINA_UNUSED)
{
efl_event_callback_legacy_call(obj, ELM_LIST_EVENT_EDGE_TOP, NULL);
}
static void
_edge_bottom_cb(Evas_Object *obj,
void *data EINA_UNUSED)
{
efl_event_callback_legacy_call(obj, ELM_LIST_EVENT_EDGE_BOTTOM, NULL);
}
static Eina_Bool
_long_press_cb(void *data)
{
Elm_List_Item_Data *it = data;
Evas_Object *obj;
ELM_LIST_ITEM_CHECK_OR_RETURN(it, ECORE_CALLBACK_CANCEL);
obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
it->long_timer = NULL;
if (it->base->disabled) goto end;
sd->longpressed = EINA_TRUE;
efl_event_callback_legacy_call
(WIDGET(it), EFL_UI_EVENT_LONGPRESSED, EO_OBJ(it));
end:
return ECORE_CALLBACK_CANCEL;
}
static void
_swipe_do(Elm_List_Item_Data *it)
{
int i, sum = 0;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
ELM_LIST_DATA_GET_FROM_ITEM(it, sd);
sd->swipe = EINA_FALSE;
for (i = 0; i < sd->movements; i++)
{
sum += sd->history[i].x;
if (abs(sd->history[0].y - sd->history[i].y) > 10) return;
}
sum /= sd->movements;
if (abs(sum - sd->history[0].x) <= 10) return;
efl_event_callback_legacy_call
(WIDGET(it), ELM_LIST_EVENT_SWIPE, EO_OBJ(it));
}
static void
_mouse_in_cb(void *data,
Evas *evas EINA_UNUSED,
Evas_Object *o EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Elm_List_Item_Data *it = data;
if (!elm_object_item_disabled_get(EO_OBJ(it)) &&
(_elm_config->focus_move_policy == ELM_FOCUS_MOVE_POLICY_IN))
elm_object_item_focus_set(EO_OBJ(it), EINA_TRUE);
}
static void
_mouse_move_cb(void *data,
Evas *evas EINA_UNUSED,
Evas_Object *o,
void *event_info)
{
Evas_Object *obj;
Elm_List_Item_Data *it = data;
Evas_Event_Mouse_Move *ev = event_info;
Evas_Coord x = 0, y = 0, w = 0, h = 0;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
efl_ref(EO_OBJ(it));
_elm_list_walk(obj, sd);
evas_object_geometry_get(o, &x, &y, &w, &h);
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
{
if (!sd->on_hold)
{
sd->on_hold = EINA_TRUE;
ELM_SAFE_FREE(it->long_timer, ecore_timer_del);
if (!sd->was_selected)
{
_item_unhighlight(it);
_item_unselect(it);
}
}
}
else if (sd->mouse_down && ELM_RECTS_POINT_OUT(x, y, w, h, ev->cur.canvas.x, ev->cur.canvas.y))
{
ELM_SAFE_FREE(it->long_timer, ecore_timer_del);
if (!sd->was_selected)
{
_item_unhighlight(it);
_item_unselect(it);
}
it->base->still_in = EINA_FALSE;
}
if (sd->movements == ELM_LIST_SWIPE_MOVES)
{
sd->swipe = EINA_TRUE;
}
else
{
sd->history[sd->movements].x = ev->cur.canvas.x;
sd->history[sd->movements].y = ev->cur.canvas.y;
if (abs((sd->history[sd->movements].x - sd->history[0].x)) > 40)
{
sd->swipe = EINA_TRUE;
}
else
sd->movements++;
}
if (sd->swipe)
ELM_SAFE_FREE(it->long_timer, ecore_timer_del);
_elm_list_unwalk(obj, sd);
efl_unref(EO_OBJ(it));
}
static void
_mouse_down_cb(void *data,
Evas *evas EINA_UNUSED,
Evas_Object *o EINA_UNUSED,
void *event_info)
{
Evas_Event_Mouse_Down *ev = event_info;
Elm_List_Item_Data *it = data;
Evas_Object *obj;
Evas_Coord x, y;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
if (ev->button == 3)
{
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
sd->dx = ev->canvas.x - x;
sd->dy = ev->canvas.y - y;
return;
}
if (ev->button != 1) return;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) sd->on_hold = EINA_TRUE;
else sd->on_hold = EINA_FALSE;
if (sd->on_hold) return;
sd->mouse_down = EINA_TRUE;
sd->was_selected = it->selected;
efl_ref(EO_OBJ(it));
_elm_list_walk(obj, sd);
_item_highlight(it);
sd->longpressed = EINA_FALSE;
ecore_timer_del(it->long_timer);
it->long_timer = ecore_timer_add
(_elm_config->longpress_timeout, _long_press_cb, it);
ecore_timer_del(it->swipe_timer);
it->swipe_timer = ecore_timer_add(ELM_LIST_SWIPE_TIME, _swipe_cancel, it);
/* Always call the callbacks last - the user may delete our context! */
if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
{
efl_event_callback_legacy_call
(WIDGET(it), EFL_UI_EVENT_CLICKED_DOUBLE, EO_OBJ(it));
efl_event_callback_legacy_call
(WIDGET(it), ELM_LIST_EVENT_ACTIVATED, EO_OBJ(it));
}
sd->swipe = EINA_FALSE;
sd->movements = 0;
it->base->still_in = EINA_TRUE;
_elm_list_unwalk(obj, sd);
efl_unref(EO_OBJ(it));
}
static void
_mouse_up_cb(void *data,
Evas *evas EINA_UNUSED,
Evas_Object *o EINA_UNUSED,
void *event_info)
{
Evas_Object *obj;
Elm_List_Item_Data *it = data;
Evas_Event_Mouse_Up *ev = event_info;
Evas_Coord x, y, dx, dy;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
if (ev->button == 3)
{
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
dx = sd->dx - (ev->canvas.x - x);
dy = sd->dy - (ev->canvas.y - y);
if (dx < 0) dx = -dx;
if (dy < 0) dy = -dy;
if ((dx < 5) && (dy < 5))
efl_event_callback_legacy_call
(obj, EFL_UI_EVENT_CLICKED_RIGHT, EO_OBJ(it));
return;
}
if (ev->button != 1) return;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) sd->on_hold = EINA_TRUE;
else sd->on_hold = EINA_FALSE;
sd->mouse_down = EINA_FALSE;
ELM_SAFE_FREE(it->long_timer, ecore_timer_del);
ELM_SAFE_FREE(it->swipe_timer, ecore_timer_del);
if (sd->swipe)
{
if (!sd->was_selected)
{
_item_unhighlight(it);
_item_unselect(it);
}
_swipe_do(data);
sd->swipe = EINA_FALSE;
sd->was_selected = EINA_FALSE;
return;
}
if (sd->longpressed)
{
if (!sd->was_selected)
{
_item_unhighlight(it);
_item_unselect(it);
}
sd->longpressed = EINA_FALSE;
sd->was_selected = EINA_FALSE;
return;
}
if (it->base->disabled)
return;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD || !it->base->still_in)
return;
efl_ref(EO_OBJ(it));
_elm_list_walk(obj, sd);
if (sd->focused_item != EO_OBJ(it))
elm_object_item_focus_set(EO_OBJ(it), EINA_TRUE);
if (sd->multi &&
((sd->multi_select_mode != ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL) ||
(evas_key_modifier_is_set(ev->modifiers, "Control"))))
{
if (!it->selected)
{
_item_highlight(it);
_item_select(it);
}
else
{
_item_unhighlight(it);
_item_unselect(it);
}
}
else
{
_items_safe_process(sd->selected, _process_item_unselected_set, EO_OBJ(it));
_item_highlight(it);
_item_select(it);
}
_elm_list_unwalk(obj, sd);
efl_unref(EO_OBJ(it));
}
static void
_elm_list_looping_left_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
Evas_Object *list = data;
ELM_LIST_DATA_GET(list, sd);
Elm_Object_Item *it = elm_list_last_item_get(list);
if (!_elm_config->item_select_on_focus_disable)
elm_list_item_selected_set(it, EINA_TRUE);
else
elm_object_item_focus_set(it, EINA_TRUE);
elm_layout_signal_emit(list, "elm,action,looping,left,end", "elm");
sd->item_looping_on = EINA_FALSE;
}
static void
_elm_list_looping_right_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
Evas_Object *list = data;
ELM_LIST_DATA_GET(list, sd);
Elm_Object_Item *it = elm_list_first_item_get(list);
if (!_elm_config->item_select_on_focus_disable)
elm_list_item_selected_set(it, EINA_TRUE);
else
elm_object_item_focus_set(it, EINA_TRUE);
elm_layout_signal_emit(list, "elm,action,looping,right,end", "elm");
sd->item_looping_on = EINA_FALSE;
}
static void
_elm_list_looping_up_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
Evas_Object *list = data;
ELM_LIST_DATA_GET(list, sd);
Elm_Object_Item *it = elm_list_last_item_get(list);
if (!_elm_config->item_select_on_focus_disable)
elm_list_item_selected_set(it, EINA_TRUE);
else
elm_object_item_focus_set(it, EINA_TRUE);
elm_layout_signal_emit(list, "elm,action,looping,up,end", "elm");
sd->item_looping_on = EINA_FALSE;
}
static void
_elm_list_looping_down_cb(void *data,
Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
Evas_Object *list = data;
ELM_LIST_DATA_GET(list, sd);
Elm_Object_Item *it = elm_list_first_item_get(list);
if (!_elm_config->item_select_on_focus_disable)
elm_list_item_selected_set(it, EINA_TRUE);
else
elm_object_item_focus_set(it, EINA_TRUE);
elm_layout_signal_emit(list, "elm,action,looping,down,end", "elm");
sd->item_looping_on = EINA_FALSE;
}
EOLIAN static void
_elm_list_item_elm_widget_item_disable(Eo *eo_item EINA_UNUSED, Elm_List_Item_Data *item)
{
_item_unhighlight(item);
_item_unselect(item);
if (item->base->disabled)
edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
else
edje_object_signal_emit(VIEW(item), "elm,state,enabled", "elm");
}
EOLIAN static void
_elm_list_item_elm_widget_item_part_content_set(Eo *eo_item EINA_UNUSED, Elm_List_Item_Data *item,
const char *part,
Evas_Object *content)
{
Evas_Object **icon_p = NULL;
Eina_Bool dummy = EINA_FALSE;
if ((!part) || (!strcmp(part, "start")))
{
icon_p = &(item->icon);
dummy = item->dummy_icon;
if (!content) item->dummy_icon = EINA_TRUE;
else item->dummy_icon = EINA_FALSE;
}
else if (!strcmp(part, "end"))
{
icon_p = &(item->end);
dummy = item->dummy_end;
if (!content) item->dummy_end = EINA_TRUE;
else item->dummy_end = EINA_FALSE;
}
else
return;
if (content == *icon_p) return;
if ((dummy) && (!content)) return;
if (dummy) evas_object_del(*icon_p);
if (!content)
{
content =
evas_object_rectangle_add(evas_object_evas_get(WIDGET(item)));
evas_object_color_set(content, 0, 0, 0, 0);
}
evas_object_del(*icon_p);
*icon_p = content;
if (VIEW(item))
{
if ((!part) || !strcmp(part, "start"))
edje_object_part_swallow(VIEW(item), "elm.swallow.icon", content);
else
edje_object_part_swallow(VIEW(item), "elm.swallow.end", content);
}
}
EOLIAN static Evas_Object *
_elm_list_item_elm_widget_item_part_content_get(const Eo *eo_item EINA_UNUSED, Elm_List_Item_Data *item,
const char *part)
{
if ((!part) || (!strcmp(part, "start")))
{
if (item->dummy_icon) return NULL;
return item->icon;
}
else if (!strcmp(part, "end"))
{
if (item->dummy_end) return NULL;
return item->end;
}
return NULL;
}
EOLIAN static Evas_Object *
_elm_list_item_elm_widget_item_part_content_unset(Eo *eo_it EINA_UNUSED, Elm_List_Item_Data *item,
const char *part)
{
if ((!part) || (!strcmp(part, "start")))
{
Evas_Object *obj = item->icon;
elm_wdg_item_part_content_set(eo_it, part, NULL);
return obj;
}
else if (!strcmp(part, "end"))
{
Evas_Object *obj = item->end;
elm_wdg_item_part_content_set(eo_it, part, NULL);
return obj;
}
return NULL;
}
EOLIAN static void
_elm_list_item_elm_widget_item_part_text_set(Eo *eo_list_it, Elm_List_Item_Data *list_it,
const char *part,
const char *text)
{
if (part && strcmp(part, "default"))
{
elm_wdg_item_part_text_custom_set(eo_list_it, part, text);
edje_object_part_text_escaped_set(VIEW(list_it), part, text);
return;
}
if (!eina_stringshare_replace(&list_it->label, text)) return;
if (VIEW(list_it))
edje_object_part_text_escaped_set(VIEW(list_it), "elm.text", text);
}
EOLIAN static const char *
_elm_list_item_elm_widget_item_part_text_get(const Eo *eo_it, Elm_List_Item_Data *it,
const char *part)
{
if (part && strcmp(part, "default"))
return elm_wdg_item_part_text_custom_get(eo_it, part);
return it->label;
}
/* FIXME: this _item_del_pre_hook is called stupidly!
To fix this,
1. it->walking concept should be adopted.
2. elm_widget_item_del() should be called instead of the combination of
_elm_list_item_free() + elm_widget_item_free()
*/
EOLIAN static void
_elm_list_item_elm_widget_item_del_pre(Eo *eo_item EINA_UNUSED, Elm_List_Item_Data *item)
{
Evas_Object *obj = WIDGET(item);
ELM_LIST_DATA_GET(obj, sd);
if (item->selected)
{
_item_unhighlight(item);
_item_unselect(item);
}
item->deleted = EINA_TRUE;
sd->items = eina_list_remove_list(sd->items, item->node);
item->node = NULL;
}
EOLIAN static void _elm_list_item_elm_widget_item_signal_emit(Eo *eo_it EINA_UNUSED, Elm_List_Item_Data *it,
const char *emission,
const char *source)
{
edje_object_signal_emit(VIEW(it), emission, source);
}
EOLIAN static void
_elm_list_item_elm_widget_item_item_focus_set(Eo *eo_it, Elm_List_Item_Data *it, Eina_Bool focused)
{
Evas_Object *obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
if (focused)
{
sd->last_focused_item = eo_it;
if (!elm_object_focus_get(obj))
elm_object_focus_set(obj, EINA_TRUE);
if (!elm_object_focus_get(obj))
return;
if (eo_it != sd->focused_item)
{
if (sd->focused_item)
_elm_list_item_unfocused(sd->focused_item);
_elm_list_item_focused(eo_it);
}
}
else
{
if (!elm_object_focus_get(obj))
return;
if (eo_it)
_elm_list_item_unfocused(eo_it);
}
_elm_widget_focus_highlight_start(obj);
}
EOLIAN static Eina_Bool
_elm_list_item_elm_widget_item_item_focus_get(const Eo *eo_it, Elm_List_Item_Data *it)
{
ELM_LIST_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
Evas_Object *obj = WIDGET(it);
ELM_LIST_CHECK(obj) EINA_FALSE;
ELM_LIST_DATA_GET(obj, sd);
if (eo_it == sd->focused_item)
return EINA_TRUE;
return EINA_FALSE;
}
EOLIAN static Efl_Access_State_Set
_elm_list_item_efl_access_object_state_set_get(const Eo *eo_it, Elm_List_Item_Data *data EINA_UNUSED)
{
Efl_Access_State_Set ret;
Eina_Bool sel;
ret = efl_access_object_state_set_get(efl_super(eo_it, ELM_LIST_ITEM_CLASS));
if (elm_object_item_disabled_get(eo_it))
return ret;
STATE_TYPE_SET(ret, EFL_ACCESS_STATE_TYPE_SELECTABLE);
sel = elm_obj_list_item_selected_get(eo_it);
if (sel)
STATE_TYPE_SET(ret, EFL_ACCESS_STATE_TYPE_SELECTED);
else
STATE_TYPE_UNSET(ret, EFL_ACCESS_STATE_TYPE_SELECTED);
return ret;
}
EOLIAN static const char*
_elm_list_item_efl_access_object_i18n_name_get(const Eo *eo_it, Elm_List_Item_Data *data)
{
const char *ret;
ret = efl_access_object_i18n_name_get(efl_super(eo_it, ELM_LIST_ITEM_CLASS));
if (ret) return ret;
return _elm_widget_item_accessible_plain_name_get(eo_it, data->label);
}
static char *
_access_info_cb(void *data, Evas_Object *obj EINA_UNUSED)
{
Elm_List_Item_Data *it = (Elm_List_Item_Data *)data;
const char *txt = NULL;
if (!it) return NULL;
if (!txt) txt = it->label;
if (txt) return strdup(txt);
return NULL;
}
static char *
_access_state_cb(void *data, Evas_Object *obj EINA_UNUSED)
{
Elm_List_Item_Data *it = (Elm_List_Item_Data *)data;
if (!it) return NULL;
if (it->base->disabled)
return strdup(E_("State: Disabled"));
return NULL;
}
static void
_access_on_highlight_cb(void *data)
{
Elm_Object_Item *it = data;
if (!it) return;
elm_list_item_bring_in(it);
}
static void
_access_activate_cb(void *data EINA_UNUSED,
Evas_Object *part_obj EINA_UNUSED,
Elm_Object_Item *eo_it)
{
Evas_Object *obj;
ELM_LIST_ITEM_DATA_GET(eo_it, it);
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
obj = WIDGET(it);
ELM_LIST_DATA_GET(obj, sd);
efl_ref(eo_it);
_elm_list_walk(obj, sd);
if (sd->multi)
{
if (!it->selected)
{
_item_highlight(it);
_item_select(it);
}
else
{
_item_unhighlight(it);
_item_unselect(it);
}
}
else
{
_items_safe_process(sd->selected, _process_item_unselected_set, eo_it);
_item_highlight(it);
_item_select(it);
}
_elm_list_unwalk(obj, sd);
efl_unref(eo_it);
}
static void
_access_widget_item_register(Elm_List_Item_Data *it, Eina_Bool is_access)
{
Elm_Access_Info *ai;
if (!is_access) _elm_access_widget_item_unregister(it->base);
else
{
_elm_access_widget_item_register(it->base);
ai = _elm_access_info_get(it->base->access_obj);
_elm_access_callback_set(ai, ELM_ACCESS_INFO, _access_info_cb, it);
_elm_access_callback_set(ai, ELM_ACCESS_STATE, _access_state_cb, it);
_elm_access_on_highlight_hook_set(ai, _access_on_highlight_cb, EO_OBJ(it));
_elm_access_activate_callback_set(ai, _access_activate_cb, EO_OBJ(it));
}
}
EOLIAN static Eo *
_elm_list_item_efl_object_constructor(Eo *eo_it, Elm_List_Item_Data *it)
{
eo_it = efl_constructor(efl_super(eo_it, ELM_LIST_ITEM_CLASS));
it->base = efl_data_scope_get(eo_it, ELM_WIDGET_ITEM_CLASS);
efl_access_object_role_set(eo_it, EFL_ACCESS_ROLE_LIST_ITEM);
return eo_it;
}
static Elm_List_Item_Data *
_item_new(Evas_Object *obj,
const char *label,
Evas_Object *icon,
Evas_Object *end,
Evas_Smart_Cb func,
const void *data)
{
Eo *eo_it = efl_add(ELM_LIST_ITEM_CLASS, obj);
if (!eo_it) return NULL;
ELM_LIST_ITEM_DATA_GET(eo_it, it);
it->label = eina_stringshare_add(label);
it->icon = icon;
it->end = end;
it->func = func;
WIDGET_ITEM_DATA_SET(EO_OBJ(it), data);
VIEW_SET(it, edje_object_add(evas_object_evas_get(obj)));
edje_object_update_hints_set(VIEW(it), 1);
if (it->icon) efl_parent_set(it->icon, eo_it);
if (it->end) efl_parent_set(it->end, eo_it);
/* access */
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
_access_widget_item_register(it, EINA_TRUE);
edje_object_mirrored_set(VIEW(it), efl_ui_mirrored_get(obj));
evas_object_event_callback_add
(VIEW(it), EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, it);
evas_object_event_callback_add
(VIEW(it), EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, it);
evas_object_event_callback_add
(VIEW(it), EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, it);
evas_object_event_callback_add
(VIEW(it), EVAS_CALLBACK_MOUSE_IN, _mouse_in_cb, it);
evas_object_size_hint_weight_set
(VIEW(it), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(VIEW(it), EVAS_HINT_FILL, EVAS_HINT_FILL);
edje_object_mirrored_set(VIEW(it), efl_ui_mirrored_get(obj));
if (it->icon)
{
elm_widget_sub_object_add(obj, it->icon);
evas_object_event_callback_add
(it->icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb,
obj);
efl_access_object_access_type_set(it->icon, EFL_ACCESS_TYPE_DISABLED);
elm_widget_tree_unfocusable_set(it->icon, EINA_TRUE);
}
if (it->end)
{
elm_widget_sub_object_add(obj, it->end);
evas_object_event_callback_add
(it->end, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb,
obj);
efl_access_object_access_type_set(it->end, EFL_ACCESS_TYPE_DISABLED);
elm_widget_tree_unfocusable_set(it->end, EINA_TRUE);
}
if (_elm_config->atspi_mode)
efl_access_added(eo_it);
return it;
}
static void
_resize_cb(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
elm_layout_sizing_eval(data);
}
static Eina_Bool _elm_list_smart_focus_next_enable = EINA_FALSE;
EOLIAN static void
_elm_list_efl_canvas_group_group_add(Eo *obj, Elm_List_Data *priv)
{
Evas_Coord minw, minh;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
efl_canvas_group_add(efl_super(obj, MY_CLASS));
elm_widget_sub_object_parent_add(obj);
elm_widget_can_focus_set(obj, EINA_TRUE);
priv->mode = ELM_LIST_SCROLL;
if (!elm_layout_theme_set(obj, "list", "base", elm_widget_style_get(obj)))
CRI("Failed to set layout!");
priv->hit_rect = evas_object_rectangle_add(evas_object_evas_get(obj));
evas_object_data_set(priv->hit_rect, "_elm_leaveme", obj);
evas_object_smart_member_add(priv->hit_rect, obj);
elm_widget_sub_object_add(obj, priv->hit_rect);
/* common scroller hit rectangle setup */
evas_object_color_set(priv->hit_rect, 0, 0, 0, 0);
evas_object_show(priv->hit_rect);
evas_object_repeat_events_set(priv->hit_rect, EINA_TRUE);
elm_interface_scrollable_edge_left_cb_set(obj, _edge_left_cb);
elm_interface_scrollable_edge_right_cb_set(obj, _edge_right_cb);
elm_interface_scrollable_edge_top_cb_set(obj, _edge_top_cb);
elm_interface_scrollable_edge_bottom_cb_set(obj, _edge_bottom_cb);
elm_interface_scrollable_content_min_limit_cb_set(obj, _elm_list_content_min_limit_cb);
elm_interface_scrollable_objects_set(obj, wd->resize_obj, priv->hit_rect);
/* the scrollable interface may set this */
evas_object_event_callback_add
(wd->resize_obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_size_hints_changed_cb, obj);
edje_object_size_min_calc
(wd->resize_obj, &minw, &minh);
evas_object_size_hint_min_set(obj, minw, minh);
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize_cb, obj);
elm_interface_scrollable_bounce_allow_set(obj, EINA_FALSE, _elm_config->thumbscroll_bounce_enable);
priv->box = elm_box_add(obj);
evas_object_size_hint_weight_set(priv->box, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(priv->box, EVAS_HINT_FILL, 0.0);
efl_access_object_access_type_set(priv->box, EFL_ACCESS_TYPE_DISABLED);
/* FIXME: change this ugly code path later */
elm_widget_on_show_region_hook_set(priv->box, obj, _show_region_hook, NULL);
elm_widget_sub_object_add(obj, priv->box);
elm_interface_scrollable_content_set(obj, priv->box);
evas_object_event_callback_add
(priv->box, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_size_hints_changed_cb, obj);
edje_object_signal_callback_add(wd->resize_obj, "elm,looping,left,done", "elm", _elm_list_looping_left_cb, obj);
edje_object_signal_callback_add(wd->resize_obj, "elm,looping,right,done", "elm", _elm_list_looping_right_cb, obj);
edje_object_signal_callback_add(wd->resize_obj, "elm,looping,up,done", "elm", _elm_list_looping_up_cb, obj);
edje_object_signal_callback_add(wd->resize_obj, "elm,looping,down,done", "elm", _elm_list_looping_down_cb, obj);
}
EOLIAN static void
_elm_list_efl_canvas_group_group_del(Eo *obj, Elm_List_Data *sd)
{
const Eina_List *l;
Elm_Object_Item *eo_it;
sd->delete_me = EINA_TRUE;
EINA_LIST_FOREACH(sd->items, l, eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
if (it->icon)
evas_object_event_callback_del
(it->icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_size_hints_changed_cb);
if (it->end)
evas_object_event_callback_del
(it->end, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_size_hints_changed_cb);
}
evas_object_event_callback_del
(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_size_hints_changed_cb);
evas_object_event_callback_del
(sd->box, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _size_hints_changed_cb);
while (sd->items)
/* will be removed from list in _elm_list_item_elm_widget_item_del_pre */
efl_del(eina_list_data_get(sd->items));
sd->selected = eina_list_free(sd->selected);
efl_canvas_group_del(efl_super(obj, MY_CLASS));
}
EOLIAN static void
_elm_list_efl_gfx_entity_position_set(Eo *obj, Elm_List_Data *sd, Eina_Position2D pos)
{
if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, pos.x, pos.y))
return;
efl_gfx_entity_position_set(efl_super(obj, MY_CLASS), pos);
efl_gfx_entity_position_set(sd->hit_rect, pos);
}
EOLIAN static void
_elm_list_efl_gfx_entity_size_set(Eo *obj, Elm_List_Data *sd, Eina_Size2D sz)
{
if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, sz.w, sz.h))
return;
efl_gfx_entity_size_set(efl_super(obj, MY_CLASS), sz);
efl_gfx_entity_size_set(sd->hit_rect, sz);
}
EOLIAN static void
_elm_list_efl_canvas_group_group_member_add(Eo *obj, Elm_List_Data *sd, Evas_Object *member)
{
efl_canvas_group_member_add(efl_super(obj, MY_CLASS), member);
if (sd->hit_rect)
evas_object_raise(sd->hit_rect);
}
EOLIAN static void
_elm_list_efl_ui_widget_on_access_update(Eo *obj EINA_UNUSED, Elm_List_Data *sd, Eina_Bool acs)
{
Eina_List *elist = NULL;
Elm_Object_Item *eo_it;
_elm_list_smart_focus_next_enable = acs;
EINA_LIST_FOREACH(sd->items, elist, eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
_access_widget_item_register(it, _elm_list_smart_focus_next_enable);
}
}
EAPI Evas_Object *
elm_list_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *
_elm_list_efl_object_constructor(Eo *obj, Elm_List_Data *sd EINA_UNUSED)
{
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
efl_access_object_role_set(obj, EFL_ACCESS_ROLE_LIST);
legacy_efl_ui_focus_manager_widget_legacy_signals(obj, obj);
return obj;
}
EOLIAN static void
_elm_list_go(Eo *obj, Elm_List_Data *sd EINA_UNUSED)
{
_items_fix(obj);
}
EOLIAN static void
_elm_list_multi_select_set(Eo *obj EINA_UNUSED, Elm_List_Data *sd, Eina_Bool multi)
{
sd->multi = multi;
}
EOLIAN static Eina_Bool
_elm_list_multi_select_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->multi;
}
EOLIAN static void
_elm_list_multi_select_mode_set(Eo *obj EINA_UNUSED, Elm_List_Data *sd, Elm_Object_Multi_Select_Mode mode)
{
if (mode >= ELM_OBJECT_MULTI_SELECT_MODE_MAX)
return;
if (sd->multi_select_mode != mode)
sd->multi_select_mode = mode;
}
EOLIAN static Elm_Object_Multi_Select_Mode
_elm_list_multi_select_mode_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->multi_select_mode;
}
EOLIAN static void
_elm_list_mode_set(Eo *obj, Elm_List_Data *sd, Elm_List_Mode mode)
{
Elm_Object_Item *eo_it;
Eina_List *n;
if (sd->mode == mode)
return;
sd->mode = mode;
_elm_list_mode_set_internal(obj);
EINA_LIST_FOREACH(sd->items, n, eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
it->fixed = EINA_FALSE;
}
_items_fix(obj);
}
EOLIAN static Elm_List_Mode
_elm_list_mode_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->mode;
}
EOLIAN static void
_elm_list_horizontal_set(Eo *obj, Elm_List_Data *sd, Eina_Bool horizontal)
{
Eina_Bool bounce = _elm_config->thumbscroll_bounce_enable;
horizontal = !!horizontal;
if (sd->h_mode == horizontal)
return;
sd->h_mode = horizontal;
elm_box_horizontal_set(sd->box, horizontal);
if (horizontal)
{
evas_object_size_hint_weight_set(sd->box, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(sd->box, 0.0, EVAS_HINT_FILL);
elm_interface_scrollable_bounce_allow_set(obj, bounce, EINA_FALSE);
}
else
{
evas_object_size_hint_weight_set(sd->box, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sd->box, EVAS_HINT_FILL, 0.0);
elm_interface_scrollable_bounce_allow_set(obj, EINA_FALSE, bounce);
}
}
EOLIAN static Eina_Bool
_elm_list_horizontal_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->h_mode;
}
EOLIAN static void
_elm_list_select_mode_set(Eo *obj EINA_UNUSED, Elm_List_Data *sd, Elm_Object_Select_Mode mode)
{
if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
return;
if (sd->select_mode != mode)
sd->select_mode = mode;
}
EOLIAN static Elm_Object_Select_Mode
_elm_list_select_mode_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->select_mode;
}
EAPI void
elm_list_bounce_set(Evas_Object *obj,
Eina_Bool h_bounce,
Eina_Bool v_bounce)
{
ELM_LIST_CHECK(obj);
elm_interface_scrollable_bounce_allow_set(obj, h_bounce, v_bounce);
}
EAPI void
elm_list_bounce_get(const Evas_Object *obj,
Eina_Bool *h_bounce,
Eina_Bool *v_bounce)
{
ELM_LIST_CHECK(obj);
elm_interface_scrollable_bounce_allow_get((Eo *) obj, h_bounce, v_bounce);
}
EAPI void
elm_list_scroller_policy_set(Evas_Object *obj,
Elm_Scroller_Policy policy_h,
Elm_Scroller_Policy policy_v)
{
ELM_LIST_CHECK(obj);
elm_interface_scrollable_policy_set(obj, policy_h, policy_v);
}
EOLIAN static void
_elm_list_elm_interface_scrollable_policy_set(Eo *obj, Elm_List_Data *sd EINA_UNUSED, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v)
{
if ((policy_h >= ELM_SCROLLER_POLICY_LAST) ||
(policy_v >= ELM_SCROLLER_POLICY_LAST))
return;
elm_interface_scrollable_policy_set(efl_super(obj, MY_CLASS), policy_h, policy_v);
}
EAPI void
elm_list_scroller_policy_get(const Evas_Object *obj,
Elm_Scroller_Policy *policy_h,
Elm_Scroller_Policy *policy_v)
{
ELM_LIST_CHECK(obj);
elm_interface_scrollable_policy_get((Eo *) obj, policy_h, policy_v);
}
static void
_item_clear(void *data EINA_UNUSED, Elm_Object_Item *eo, Elm_List_Item_Data *it EINA_UNUSED)
{
efl_del(eo);
}
EOLIAN static void
_elm_list_clear(Eo *obj, Elm_List_Data *sd)
{
if (!sd->items) return;
sd->selected = eina_list_free(sd->selected);
_items_safe_process(sd->items, _item_clear, NULL);
_items_fix(obj);
elm_layout_sizing_eval(obj);
}
EOLIAN static const Eina_List*
_elm_list_items_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->items;
}
EOLIAN static Elm_Object_Item*
_elm_list_selected_item_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
if (sd->selected) return sd->selected->data;
else return NULL;
}
EOLIAN static const Eina_List*
_elm_list_selected_items_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->selected;
}
EOLIAN static Elm_Object_Item*
_elm_list_item_append(Eo *obj, Elm_List_Data *sd, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data)
{
Elm_List_Item_Data *it;
it = _item_new(obj, label, icon, end, func, data);
sd->items = eina_list_append(sd->items, EO_OBJ(it));
it->node = eina_list_last(sd->items);
elm_box_pack_end(sd->box, VIEW(it));
if (_elm_config->atspi_mode)
efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
return EO_OBJ(it);
}
EOLIAN static Elm_Object_Item*
_elm_list_item_prepend(Eo *obj, Elm_List_Data *sd, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data)
{
Elm_List_Item_Data *it;
it = _item_new(obj, label, icon, end, func, data);
sd->items = eina_list_prepend(sd->items, EO_OBJ(it));
it->node = sd->items;
elm_box_pack_start(sd->box, VIEW(it));
if (_elm_config->atspi_mode)
efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
return EO_OBJ(it);
}
EOLIAN static Elm_Object_Item*
_elm_list_item_insert_before(Eo *obj, Elm_List_Data *sd, Elm_Object_Item *eo_before, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data)
{
Elm_List_Item_Data *it;
EINA_SAFETY_ON_NULL_RETURN_VAL(eo_before, NULL);
ELM_LIST_ITEM_DATA_GET(eo_before, before_it);
ELM_LIST_ITEM_CHECK_OR_RETURN(before_it, NULL);
if (!before_it->node) return NULL;
it = _item_new(obj, label, icon, end, func, data);
sd->items = eina_list_prepend_relative_list(sd->items, EO_OBJ(it), before_it->node);
it->node = before_it->node->prev;
elm_box_pack_before(sd->box, VIEW(it), VIEW(before_it));
if (_elm_config->atspi_mode)
efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
return EO_OBJ(it);
}
EOLIAN static Elm_Object_Item*
_elm_list_item_insert_after(Eo *obj, Elm_List_Data *sd, Elm_Object_Item *eo_after, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data)
{
Elm_List_Item_Data *it;
EINA_SAFETY_ON_NULL_RETURN_VAL(eo_after, NULL);
ELM_LIST_ITEM_DATA_GET(eo_after, after_it);
ELM_LIST_ITEM_CHECK_OR_RETURN(after_it, NULL);
if (!after_it->node) return NULL;
it = _item_new(obj, label, icon, end, func, data);
sd->items = eina_list_append_relative_list(sd->items, EO_OBJ(it), after_it->node);
it->node = after_it->node->next;
elm_box_pack_after(sd->box, VIEW(it), VIEW(after_it));
if (_elm_config->atspi_mode)
efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
return EO_OBJ(it);
}
EOLIAN static Elm_Object_Item*
_elm_list_item_sorted_insert(Eo *obj, Elm_List_Data *sd, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func)
{
Eina_List *l;
Elm_List_Item_Data *it;
it = _item_new(obj, label, icon, end, func, data);
sd->items = eina_list_sorted_insert(sd->items, cmp_func, EO_OBJ(it));
l = eina_list_data_find_list(sd->items, EO_OBJ(it));
l = eina_list_next(l);
if (!l)
{
it->node = eina_list_last(sd->items);
elm_box_pack_end(sd->box, VIEW(it));
}
else
{
Elm_Object_Item *eo_before = eina_list_data_get(l);
ELM_LIST_ITEM_DATA_GET(eo_before, before);
it->node = before->node->prev;
elm_box_pack_before(sd->box, VIEW(it), VIEW(before));
}
if (_elm_config->atspi_mode)
efl_access_children_changed_added_signal_emit(obj, EO_OBJ(it));
return EO_OBJ(it);
}
EOLIAN static void
_elm_list_item_separator_set(Eo *eo_item, Elm_List_Item_Data *it, Eina_Bool setting)
{
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
it->is_separator = !!setting;
if (it->is_separator)
efl_access_object_role_set(eo_item, EFL_ACCESS_ROLE_SEPARATOR);
else
efl_access_object_role_set(eo_item, EFL_ACCESS_ROLE_LIST_ITEM);
}
EOLIAN static Eina_Bool
_elm_list_item_separator_get(const Eo *eo_item EINA_UNUSED, Elm_List_Item_Data *it)
{
ELM_LIST_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
return it->is_separator;
}
EOLIAN static void
_elm_list_item_selected_set(Eo *eo_item, Elm_List_Item_Data *item,
Eina_Bool selected)
{
Evas_Object *obj;
ELM_LIST_ITEM_CHECK_OR_RETURN(item);
obj = WIDGET(item);
ELM_LIST_DATA_GET(obj, sd);
selected = !!selected;
if (item->selected == selected) return;
efl_ref(eo_item);
_elm_list_walk(obj, sd);
if (selected)
{
if (!sd->multi)
_items_safe_process(sd->selected, _process_item_unselected_set, NULL);
_item_highlight(item);
elm_object_item_focus_set(EO_OBJ(item), EINA_TRUE);
_item_select(item);
}
else
{
_process_item_unselected_set(NULL, eo_item, item);
}
_elm_list_unwalk(obj, sd);
efl_unref(eo_item);
}
EOLIAN static Eina_Bool
_elm_list_item_selected_get(const Eo *eo_item EINA_UNUSED, Elm_List_Item_Data *it)
{
ELM_LIST_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
return it->selected;
}
EOLIAN static void
_elm_list_item_show(Eo *eo_it EINA_UNUSED, Elm_List_Item_Data *it)
{
Evas_Coord bx, by, bw, bh;
Evas_Coord x, y, w, h;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
ELM_LIST_DATA_GET_FROM_ITEM(it, sd);
evas_smart_objects_calculate(evas_object_evas_get(sd->box));
evas_object_geometry_get(sd->box, &bx, &by, &bw, &bh);
evas_object_geometry_get(VIEW(it), &x, &y, &w, &h);
x -= bx;
y -= by;
elm_interface_scrollable_content_region_show(WIDGET(it), x, y, w, h);
}
EOLIAN static void
_elm_list_item_bring_in(Eo *eo_it EINA_UNUSED, Elm_List_Item_Data *it)
{
Evas_Coord bx, by, bw, bh;
Evas_Coord x, y, w, h;
ELM_LIST_ITEM_CHECK_OR_RETURN(it);
ELM_LIST_DATA_GET_FROM_ITEM(it, sd);
evas_smart_objects_calculate(evas_object_evas_get(sd->box));
evas_object_geometry_get(sd->box, &bx, &by, &bw, &bh);
evas_object_geometry_get(VIEW(it), &x, &y, &w, &h);
x -= bx;
y -= by;
elm_interface_scrollable_region_bring_in(WIDGET(it), x, y, w, h);
}
EOLIAN static Evas_Object *
_elm_list_item_object_get(const Eo *eo_it EINA_UNUSED, Elm_List_Item_Data *it)
{
ELM_LIST_ITEM_CHECK_OR_RETURN(it, NULL);
return VIEW(it);
}
EOLIAN static Elm_Object_Item *
_elm_list_item_prev_get(const Eo *eo_item EINA_UNUSED, Elm_List_Item_Data *item)
{
if (item->node->prev)
return item->node->prev->data;
return NULL;
}
EOLIAN static Elm_Object_Item *
_elm_list_item_next_get(const Eo *eo_item EINA_UNUSED, Elm_List_Item_Data *item)
{
if (item->node->next)
return item->node->next->data;
return NULL;
}
EOLIAN static Elm_Object_Item*
_elm_list_first_item_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
if (!sd->items) return NULL;
else
return eina_list_data_get(sd->items);
return NULL;
}
EOLIAN static Elm_Object_Item*
_elm_list_last_item_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
if (!sd->items) return NULL;
else
return eina_list_data_get(eina_list_last(sd->items));
return NULL;
}
EOLIAN static Elm_Object_Item*
_elm_list_at_xy_item_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd, Evas_Coord x, Evas_Coord y, int *posret)
{
Eina_List *l;
Elm_Object_Item *eo_it;
Evas_Coord lasty;
evas_object_geometry_get(sd->hit_rect, &lasty, NULL, NULL, NULL);
EINA_LIST_FOREACH(sd->items, l, eo_it)
{
ELM_LIST_ITEM_DATA_GET(eo_it, it);
Evas_Coord itx, ity;
Evas_Object *vit = VIEW(it);
Evas_Coord vx, vy, vw, vh;
evas_object_geometry_get(vit, &vx, &vy, &vw, &vh);
itx = vx;
ity = vy;
if (ELM_RECTS_INTERSECT
(itx, ity, vw, vh, x, y, 1, 1))
{
if (posret)
{
if (y <= (ity + (vh / 4))) *posret = -1;
else if (y >= (ity + vh - (vh / 4)))
*posret = 1;
else *posret = 0;
}
return EO_OBJ(it);
}
lasty = ity + vh;
}
if (posret)
{
if (y > lasty) *posret = 1;
else *posret = -1;
}
return NULL;
}
EOLIAN static void
_elm_list_focus_on_selection_set(Eo *obj EINA_UNUSED, Elm_List_Data *sd, Eina_Bool enabled)
{
sd->focus_on_selection_enabled = !!enabled;
}
EOLIAN static Eina_Bool
_elm_list_focus_on_selection_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->focus_on_selection_enabled;
}
static Eina_Rect
_elm_list_item_coordinates_adjust(Elm_List_Item_Data *it)
{
Evas_Coord ix, iy, iw, ih, vx, vy, vw, vh;
elm_interface_scrollable_content_viewport_geometry_get(WIDGET(it), &vx, &vy, &vw, &vh);
evas_object_geometry_get(VIEW(it), &ix, &iy, &iw, &ih);
if (iy < vy)
iy = vy;
if ((iy + ih) > (vy + vh))
ih = (vy + vh - iy);
if (ix < vx)
ix = vx;
if ((ix + iw) > (vx + vw))
iw = (vx + vw - ix);
return EINA_RECT(ix, iy, iw, ih);
}
EOLIAN static Eina_Rect
_elm_list_efl_ui_widget_focus_highlight_geometry_get(const Eo *obj, Elm_List_Data *sd)
{
Eina_Rect r = {};
if (sd->focused_item)
{
ELM_LIST_ITEM_DATA_GET(sd->focused_item, focus_it);
r = _elm_list_item_coordinates_adjust(focus_it);
elm_widget_focus_highlight_focus_part_geometry_get(VIEW(focus_it), &r.x, &r.y, &r.w, &r.h);
}
else
{
r = efl_gfx_entity_geometry_get(obj);
}
return r;
}
EOLIAN static Elm_Object_Item*
_elm_list_elm_widget_item_container_focused_item_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->focused_item;
}
EOLIAN static void
_elm_list_elm_interface_scrollable_item_loop_enabled_set(Eo *obj EINA_UNUSED, Elm_List_Data *sd, Eina_Bool enable)
{
sd->item_loop_enable = !!enable;
}
EOLIAN static Eina_Bool
_elm_list_elm_interface_scrollable_item_loop_enabled_get(const Eo *obj EINA_UNUSED, Elm_List_Data *sd)
{
return sd->item_loop_enable;
}
static void
_elm_list_class_constructor(Efl_Class *klass)
{
if (_elm_config->access_mode)
_elm_list_smart_focus_next_enable = EINA_TRUE;
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
EOLIAN const Efl_Access_Action_Data *
_elm_list_efl_access_widget_action_elm_actions_get(const Eo *obj EINA_UNUSED, Elm_List_Data *pd EINA_UNUSED)
{
static Efl_Access_Action_Data atspi_actions[] = {
{ "move,prior", "move", "prior", _key_action_move},
{ "move,next", "move", "next", _key_action_move},
{ "move,left", "move", "left", _key_action_move},
{ "move,left,multi", "move", "left_multi", _key_action_move},
{ "move,right", "move", "right", _key_action_move},
{ "move,right,multi", "move", "right_multi", _key_action_move},
{ "move,up", "move", "up", _key_action_move},
{ "move,up,multi", "move", "up_multi", _key_action_move},
{ "move,down", "move", "down", _key_action_move},
{ "move,down,multi", "move", "down_multi", _key_action_move},
{ "move,first", "move", "first", _key_action_move},
{ "move,last", "move", "last", _key_action_move},
{ "select", "select", NULL, _key_action_select},
{ "escape", "escape", NULL, _key_action_escape},
{ NULL, NULL, NULL, NULL }
};
return &atspi_actions[0];
}
EOLIAN Eina_List*
_elm_list_efl_access_object_access_children_get(const Eo *obj, Elm_List_Data *pd)
{
Eina_List *ret;
ret = efl_access_object_access_children_get(efl_super(obj, ELM_LIST_CLASS));
return eina_list_merge(eina_list_clone(pd->items), ret);
}
EOLIAN int
_elm_list_efl_access_selection_selected_children_count_get(const Eo *objm EINA_UNUSED, Elm_List_Data *pd)
{
return eina_list_count(pd->selected);
}
EOLIAN Eo*
_elm_list_efl_access_selection_selected_child_get(const Eo *obj EINA_UNUSED, Elm_List_Data *pd, int child_idx)
{
return eina_list_nth(pd->selected, child_idx);
}
EOLIAN Eina_Bool
_elm_list_efl_access_selection_child_select(Eo *obj EINA_UNUSED, Elm_List_Data *pd, int child_index)
{
if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
{
Eo *item = eina_list_nth(pd->items, child_index);
if (item)
elm_list_item_selected_set(item, EINA_TRUE);
return EINA_TRUE;
}
return EINA_FALSE;
}
EOLIAN Eina_Bool
_elm_list_efl_access_selection_selected_child_deselect(Eo *obj EINA_UNUSED, Elm_List_Data *pd, int child_index)
{
Eo *item = eina_list_nth(pd->selected, child_index);
if (item)
{
elm_list_item_selected_set(item, EINA_FALSE);
return EINA_TRUE;
}
return EINA_FALSE;
}
EOLIAN Eina_Bool
_elm_list_efl_access_selection_is_child_selected(Eo *obj EINA_UNUSED, Elm_List_Data *pd, int child_index)
{
Eo *item = eina_list_nth(pd->items, child_index);
if (item)
return elm_list_item_selected_get(item);
return EINA_FALSE;
}
EOLIAN Eina_Bool
_elm_list_efl_access_selection_all_children_select(Eo *obj EINA_UNUSED, Elm_List_Data *pd)
{
Eo *it;
Eina_List *l;
if (pd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)
return EINA_FALSE;
EINA_LIST_FOREACH(pd->items, l, it)
elm_list_item_selected_set(it, EINA_TRUE);
return EINA_TRUE;
}
EOLIAN Eina_Bool
_elm_list_efl_access_selection_access_selection_clear(Eo *obj EINA_UNUSED, Elm_List_Data *pd)
{
Eo *it;
Eina_List *l;
if (pd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)
return EINA_FALSE;
EINA_LIST_FOREACH(pd->items, l, it)
elm_list_item_selected_set(it, EINA_FALSE);
return EINA_TRUE;
}
EOLIAN Eina_Bool
_elm_list_efl_access_selection_child_deselect(Eo *obj EINA_UNUSED, Elm_List_Data *pd, int child_index)
{
Eo *item = eina_list_nth(pd->items, child_index);
if (item)
{
elm_list_item_selected_set(item, EINA_FALSE);
return EINA_TRUE;
}
return EINA_FALSE;
}
EOLIAN static Eina_Bool
_elm_list_efl_ui_widget_focus_state_apply(Eo *obj, Elm_List_Data *pd EINA_UNUSED, Efl_Ui_Widget_Focus_State current_state, Efl_Ui_Widget_Focus_State *configured_state, Efl_Ui_Widget *redirect EINA_UNUSED)
{
return efl_ui_widget_focus_state_apply(efl_super(obj, MY_CLASS), current_state, configured_state, obj);
}
/* Standard widget overrides */
ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(elm_list, Elm_List_Data)
/* 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"
-#include "elm_list_item.eo.c"
+#include "elm_list_eo.c"
+#include "elm_list_item_eo.c"
diff --git a/src/lib/elementary/elm_list.eo b/src/lib/elementary/elm_list.eo
deleted file mode 100644
index 67efc7703e..0000000000
--- a/src/lib/elementary/elm_list.eo
+++ /dev/null
@@ -1,439 +0,0 @@
-import elm_general;
-
-class Elm.List extends Efl.Ui.Layout_Base implements Elm.Interface_Scrollable,
- Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Access.Object,
- Efl.Ui.Clickable, Efl.Ui.Selectable, Efl.Ui.Legacy, Elm.Widget_Item_Container
-{
- [[Elementary list class]]
- legacy_prefix: elm_list;
- eo_prefix: elm_obj_list;
- event_prefix: elm_list;
- methods {
- @property horizontal {
- [[Control horizontal mode on the list object.
-
- Note: Vertical mode is set by default.
-
- On horizontal mode items are displayed on list from left to right,
- instead of from top to bottom. Also, the list will scroll horizontally.
- Each item will presents left icon on top and right icon, or end, at
- the bottom.]]
- set {
- }
- get {
- }
- values {
- horizontal: bool; [[$true to enable horizontal or $false to disable it, i.e., to enable vertical mode.]]
- }
- }
- @property select_mode {
- [[Control the list select mode.
-
- elm_list_select_mode_set() changes item select mode in the list widget.
- - #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
- callback when first becoming selected. Any further clicks will
- do nothing, unless you set always select mode.
- - #ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
- every click will make the selected callbacks be called.
- - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
- entirely and they will neither appear selected nor call selected
- callback functions.]]
- set {
- }
- get {
- }
- values {
- mode: Elm.Object.Select_Mode(Elm.Object.Select_Mode.max); [[The select mode]]
- }
- }
- @property focus_on_selection {
- [[Control focus upon items selection mode
-
- When enabled, every selection of an item inside the genlist will automatically set focus to
- its first focusable widget from the left. This is true of course if the selection was made by
- clicking an unfocusable area in an item or selecting it with a key movement. Clicking on a
- focusable widget inside an item will cause this particular item to get focus as usual.]]
- set {
- }
- get {
- }
- values {
- enabled: bool; [[The tree effect status ($true = enabled, $false = disabled)]]
- }
- }
- @property multi_select {
- [[Control multiple items selection on the list object.
-
- Disabled by default. If disabled, the user can select a single item of
- the list each time. Selected items are highlighted on list.
- If enabled, many items can be selected.
-
- If a selected item is selected again, it will be unselected.]]
- set {
- }
- get {
- }
- values {
- multi: bool; [[$true to enable multi selection or $false to disable it.]]
- }
- }
- @property multi_select_mode {
- [[Control the list multi select mode.
-
- - #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever each
- item is clicked.
- - #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only one item will be selected
- although multi-selection is enabled, if clicked without pressing control
- key. This mode is only available with multi-selection.
-
- See: @.multi_select
-
- @since 1.8]]
- set {
- }
- get {
- }
- values {
- mode: Elm.Object.Multi_Select_Mode(Elm.Object.Multi_Select_Mode.max); [[The multi select mode]]
- }
- }
- @property mode {
- [[Control which mode to use for the list object.
-
- Set list's resize behavior, transverse axis scroll and
- items cropping. See each mode's description for more details.
-
- Note: Default value is #ELM_LIST_SCROLL.
-
- Only one mode at a time can be set. If a previous one was set, it
- will be changed by the new mode after this call. Bitmasks won't
- work here as well.
-
- Warning: This function's behavior will clash with those of
- elm_scroller_content_min_limit(), so use either one of them, but
- not both.]]
- set {
- }
- get {
- }
- values {
- mode: Elm.List.Mode(Elm.List.Mode.last); [[One of #Elm_List_Mode: #ELM_LIST_COMPRESS, #ELM_LIST_SCROLL, #ELM_LIST_LIMIT or #ELM_LIST_EXPAND.]]
- }
- }
- @property selected_item {
- get {
- [[Get the selected item.
-
- The selected item can be unselected with function
- elm_list_item_selected_set().
-
- The selected item always will be highlighted on list.]]
-
- return: Elm.Widget.Item; [[The selected list item.]]
- }
- }
- @property items {
- get {
- [[Get a list of all the list items.]]
-
- return: const(list); [[A $list of list items, #Elm.Widget.Item, or $NULL on failure.]]
- }
- }
- @property first_item {
- get {
- [[Get the first item in the list
-
- This returns the first item in the list.]]
-
- return: Elm.Widget.Item; [[The first item, or NULL if none]]
- }
- }
- @property selected_items {
- get {
- [[Return a list of the currently selected list items.
-
- Multiple items can be selected if multi select is enabled. It can be
- done with elm_list_multi_select_set().]]
-
- return: const(list); [[An $list of list items, #Elm.Widget.Item, or $NULL on failure.]]
- }
- }
- @property last_item {
- get {
- [[Get the last item in the list
-
- This returns the last item in the list.]]
-
- return: Elm.Widget.Item; [[The last item, or NULL if none]]
- }
- }
- item_insert_before {
- [[Insert a new item into the list object before item $before.
-
- A new item will be created and added to the list. Its position in
- this list will be just before item $before.
-
- Items created with this method can be deleted with elm_object_item_del().
-
- Associated $data can be properly freed when item is deleted if a
- callback function is set with elm_object_item_del_cb_set().
-
- If a function is passed as argument, it will be called every time this item
- is selected, i.e., the user clicks over an unselected item.
- If always select is enabled it will call this function every time
- user clicks over an item (already selected or not).
- If such function isn't needed, just passing
- $NULL as $func is enough. The same should be done for $data.
-
- Note: Remember that the label parameter is copied inside the list. So if an
- application dynamically allocated the label, the application should free the
- label after this call.]]
-
- return: Elm.Widget.Item; [[The created item or $NULL upon failure.]]
- params {
- @in before: Elm.Widget.Item; [[The list item to insert before.]]
- @in label: string; [[The label of the list item.]]
- @in icon: Efl.Canvas.Object @optional; [[The icon object to use for the left side of the item. An icon can be any Evas object, but usually it is an icon created with elm_icon_add().]]
- @in end: Efl.Canvas.Object @optional; [[The icon object to use for the right side of the item. An icon can be any Evas object.]]
- @in func: Evas_Smart_Cb @optional; [[The function to call when the item is clicked.]]
- @in data: const(void_ptr) @optional; [[The data to associate with the item for related callbacks.]]
- }
- }
- go {
- [[Starts the list.
-
- Note: Call before running show() on the list object.
- Warning: If not called, it won't display the list properly.]]
-
- /* FIXME-doc
- @code
- li = elm_list_add(win);
- elm_list_item_append(li, "First", NULL, NULL, NULL, NULL);
- elm_list_item_append(li, "Second", NULL, NULL, NULL, NULL);
- elm_list_go(li);
- evas_object_show(li);
- @endcode */
- }
- item_insert_after {
- [[Insert a new item into the list object after item $after.
-
- A new item will be created and added to the list. Its position in
- this list will be just after item $after.
-
- Items created with this method can be deleted with elm_object_item_del().
-
- Associated $data can be properly freed when item is deleted if a
- callback function is set with elm_object_item_del_cb_set().
-
- If a function is passed as argument, it will be called every time this item
- is selected, i.e., the user clicks over an unselected item.
- If always select is enabled it will call this function every time
- user clicks over an item (already selected or not).
- If such function isn't needed, just passing
- $NULL as $func is enough. The same should be done for $data.
-
- Note: Remember that the label parameter is copied inside the list. So if an
- application dynamically allocated the label, the application should free the
- label after this call.]]
-
- return: Elm.Widget.Item; [[The created item or $NULL upon failure.]]
- params {
- @in after: Elm.Widget.Item; [[The list item to insert after.]]
- @in label: string; [[The label of the list item.]]
- @in icon: Efl.Canvas.Object @optional; [[The icon object to use for the left side of the item. An icon can be any Evas object, but usually it is an icon created with elm_icon_add().]]
- @in end: Efl.Canvas.Object @optional; [[The icon object to use for the right side of the item. An icon can be any Evas object.]]
- @in func: Evas_Smart_Cb @optional; [[The function to call when the item is clicked.]]
- @in data: const(void_ptr) @optional; [[The data to associate with the item for related callbacks.]]
- }
- }
- at_xy_item_get @const {
- [[Get the item that is at the x, y canvas coords.
-
- This returns the item at the given coordinates (which are canvas
- relative, not object-relative). If an item is at that coordinate,
- that item handle is returned, and if $posret is not NULL, the
- integer pointed to is set to a value of -1, 0 or 1, depending if
- the coordinate is on the upper portion of that item (-1), on the
- middle section (0) or on the lower part (1). If NULL is returned as
- an item (no item found there), then posret may indicate -1 or 1
- based if the coordinate is above or below all items respectively in
- the list.]]
-
- return: Elm.Widget.Item; [[The item at the coordinates or NULL if none]]
- params {
- @in x: int; [[The input x coordinate]]
- @in y: int; [[The input y coordinate]]
- @out posret: int; [[The position relative to the item returned here]]
- }
- }
- item_append {
- [[Append a new item to the list object.
-
- A new item will be created and appended to the list, i.e., will
- be set as last item.
-
- Items created with this method can be deleted with elm_object_item_del().
-
- Associated $data can be properly freed when item is deleted if a
- callback function is set with elm_object_item_del_cb_set().
-
- If a function is passed as argument, it will be called every time this item
- is selected, i.e., the user clicks over an unselected item.
- If always select is enabled it will call this function every time
- user clicks over an item (already selected or not).
- If such function isn't needed, just passing
- $NULL as $func is enough. The same should be done for $data.
-
- Note: Remember that the label parameter is copied inside the list. So if an
- application dynamically allocated the label, the application should free the
- label after this call.]]
-
- /* FIXME-doc
- Simple example (with no function callback or data associated):
- @code
- li = elm_list_add(win);
- ic = elm_icon_add(win);
- elm_image_file_set(ic, "path/to/image", NULL);
- elm_icon_resizable_set(ic, true, true);
- elm_list_item_append(li, "label", ic, NULL, NULL, NULL);
- elm_list_go(li);
- evas_object_show(li);
- @endcode
-
- @see elm_list_select_mode_set()
- @see elm_object_item_del()
- @see elm_object_item_del_cb_set()
- @see elm_list_clear()
- @see elm_icon_add()
- */
-
- return: Elm.Widget.Item; [[The created item or $NULL upon failure.]]
- params {
- @in label: string; [[The label of the list item.]]
- @in icon: Efl.Canvas.Object @optional; [[The icon object to use for the left side of the item. An icon can be any Evas object, but usually it is an icon created with elm_icon_add().]]
- @in end: Efl.Canvas.Object @optional; [[The icon object to use for the right side of the item. An icon can be any Evas object.]]
- @in func: Evas_Smart_Cb @optional; [[The function to call when the item is clicked.]]
- @in data: const(void_ptr) @optional; [[The data to associate with the item for related callbacks.]]
- }
- }
- item_prepend {
- [[Prepend a new item to the list object.
-
- A new item will be created and prepended to the list, i.e., will
- be set as first item.
-
- Items created with this method can be deleted with elm_object_item_del().
-
- Associated $data can be properly freed when item is deleted if a
- callback function is set with elm_object_item_del_cb_set().
-
- If a function is passed as argument, it will be called every time this item
- is selected, i.e., the user clicks over an unselected item.
- If always select is enabled it will call this function every time
- user clicks over an item (already selected or not).
- If such function isn't needed, just passing
- $NULL as $func is enough. The same should be done for $data.
-
- Note: Remember that the label parameter is copied inside the list. So if an
- application dynamically allocated the label, the application should free the
- label after this call.]]
-
- return: Elm.Widget.Item; [[The created item or $NULL upon failure.]]
- params {
- @in label: string; [[The label of the list item.]]
- @in icon: Efl.Canvas.Object @optional; [[The icon object to use for the left side of the item. An icon can be any Evas object, but usually it is an icon created with elm_icon_add().]]
- @in end: Efl.Canvas.Object @optional; [[The icon object to use for the right side of the item. An icon can be any Evas object.]]
- @in func: Evas_Smart_Cb @optional; [[The function to call when the item is clicked.]]
- @in data: const(void_ptr) @optional; [[The data to associate with the item for related callbacks.]]
- }
- }
- clear {
- [[Remove all list's items.]]
- }
- item_sorted_insert {
- [[Insert a new item into the sorted list object.
-
- Note: This function inserts values into a list object assuming it was
- sorted and the result will be sorted.
-
- A new item will be created and added to the list. Its position in
- this list will be found comparing the new item with previously inserted
- items using function $cmp_func.
-
- Items created with this method can be deleted with elm_object_item_del().
-
- Associated $data can be properly freed when item is deleted if a
- callback function is set with elm_object_item_del_cb_set().
-
- If a function is passed as argument, it will be called every time this item
- is selected, i.e., the user clicks over an unselected item.
- If always select is enabled it will call this function every time
- user clicks over an item (already selected or not).
- If such function isn't needed, just passing
- $NULL as $func is enough. The same should be done for $data.
-
- Note: Remember that the label parameter is copied inside the list. So if an
- application dynamically allocated the label, the application should free the
- label after this call.]]
-
- return: Elm.Widget.Item; [[The created item or $NULL upon failure.]]
- params {
- @in label: string; [[The label of the list item.]]
- @in icon: Efl.Canvas.Object @optional; [[The icon object to use for the left side of the item. An icon can be any Evas object, but usually it is an icon created with elm_icon_add().]]
- @in end: Efl.Canvas.Object @optional; [[The icon object to use for the right side of the item. An icon can be any Evas object.]]
- @in func: Evas_Smart_Cb @optional; [[The function to call when the item is clicked.]]
- @in data: const(void_ptr) @optional; [[The data to associate with the item for related callbacks.]]
- @in cmp_func: Eina_Compare_Cb; [[The comparing function to be used to sort list
- items by #Elm.Widget.Item item handles. This function will
- receive two items and compare them, returning a non-negative integer
- if the second item should be place after the first, or negative value
- if should be placed before.]]
- }
- }
- }
- implements {
- class.constructor;
- Efl.Object.constructor;
- Efl.Gfx.Entity.position { set; }
- Efl.Gfx.Entity.size { set; }
- Efl.Canvas.Group.group_member_add;
- Efl.Ui.Widget.theme_apply;
- Efl.Ui.Widget.on_access_update;
- Efl.Ui.Widget.focus_highlight_geometry { get; }
- Efl.Ui.Widget.disabled {set;}
- Efl.Ui.Focus.Object.on_focus_update;
- Efl.Ui.L10n.translation_update;
- Efl.Ui.Widget.widget_sub_object_del;
- Efl.Ui.Widget.widget_input_event_handler;
- Elm.Widget_Item_Container.focused_item { get; }
- Efl.Ui.Widget.focus_state_apply;
- Elm.Interface_Scrollable.item_loop_enabled { get; set; }
- Elm.Interface_Scrollable.policy { set; }
- Efl.Access.Widget.Action.elm_actions { get; }
- Efl.Access.Object.access_children { get; }
- Efl.Access.Selection.selected_children_count { get; }
- Efl.Access.Selection.selected_child { get; }
- Efl.Access.Selection.selected_child_deselect;
- Efl.Access.Selection.child_select;
- Efl.Access.Selection.child_deselect;
- Efl.Access.Selection.is_child_selected;
- Efl.Access.Selection.all_children_select;
- Efl.Access.Selection.access_selection_clear;
- }
- events {
- activated: Efl.Object; [[Called when activated]]
- edge,top: void; [[Called when top edge was reached]]
- edge,bottom: void; [[Called when bottom edge was reached]]
- edge,left: void; [[Called when left edge was reached]]
- edge,right: void; [[Called when right edge was reached]]
- swipe: Efl.Object; [[Called when swipe is detected]]
- highlighted: Efl.Object; [[Called when highlighted]]
- unhighlighted: Efl.Object; [[Called when no longer highlighted]]
- item,focused: Efl.Object; [[Called when item got focus]]
- item,unfocused: Efl.Object; [[Called when item no longer has focus]]
- /* FIXME: Nobody emits these
- item,reorder,anim,start; [[Called when item reorder animation started]]
- item,reorder,anim,stop; [[Called when item reorder animation stopped]]
- */
- }
-}
diff --git a/src/lib/elementary/elm_list_eo.c b/src/lib/elementary/elm_list_eo.c
new file mode 100644
index 0000000000..077fcac301
--- /dev/null
+++ b/src/lib/elementary/elm_list_eo.c
@@ -0,0 +1,368 @@
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_ACTIVATED =
+ EFL_EVENT_DESCRIPTION("activated");
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_EDGE_TOP =
+ EFL_EVENT_DESCRIPTION("edge,top");
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_EDGE_BOTTOM =
+ EFL_EVENT_DESCRIPTION("edge,bottom");
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_EDGE_LEFT =
+ EFL_EVENT_DESCRIPTION("edge,left");
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_EDGE_RIGHT =
+ EFL_EVENT_DESCRIPTION("edge,right");
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_SWIPE =
+ EFL_EVENT_DESCRIPTION("swipe");
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_HIGHLIGHTED =
+ EFL_EVENT_DESCRIPTION("highlighted");
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_UNHIGHLIGHTED =
+ EFL_EVENT_DESCRIPTION("unhighlighted");
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_ITEM_FOCUSED =
+ EFL_EVENT_DESCRIPTION("item,focused");
+EWAPI const Efl_Event_Description _ELM_LIST_EVENT_ITEM_UNFOCUSED =
+ EFL_EVENT_DESCRIPTION("item,unfocused");
+
+void _elm_list_horizontal_set(Eo *obj, Elm_List_Data *pd, Eina_Bool horizontal);
+
+
+static Eina_Error
+__eolian_elm_list_horizontal_set_reflect(Eo *obj, Eina_Value val)
+{
+ Eina_Error r = 0; Eina_Bool cval;
+ if (!eina_value_bool_convert(&val, &cval))
+ {
+ r = EINA_ERROR_VALUE_FAILED;
+ goto end;
+ }
+ elm_obj_list_horizontal_set(obj, cval);
+ end:
+ eina_value_flush(&val);
+ return r;
+}
+
+EOAPI EFL_VOID_FUNC_BODYV(elm_obj_list_horizontal_set, EFL_FUNC_CALL(horizontal), Eina_Bool horizontal);
+
+Eina_Bool _elm_list_horizontal_get(const Eo *obj, Elm_List_Data *pd);
+
+
+static Eina_Value
+__eolian_elm_list_horizontal_get_reflect(Eo *obj)
+{
+ Eina_Bool val = elm_obj_list_horizontal_get(obj);
+ return eina_value_bool_init(val);
+}
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_horizontal_get, Eina_Bool, 0);
+
+void _elm_list_select_mode_set(Eo *obj, Elm_List_Data *pd, Elm_Object_Select_Mode mode);
+
+EOAPI EFL_VOID_FUNC_BODYV(elm_obj_list_select_mode_set, EFL_FUNC_CALL(mode), Elm_Object_Select_Mode mode);
+
+Elm_Object_Select_Mode _elm_list_select_mode_get(const Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_select_mode_get, Elm_Object_Select_Mode, 4 /* Elm.Object.Select_Mode.max */);
+
+void _elm_list_focus_on_selection_set(Eo *obj, Elm_List_Data *pd, Eina_Bool enabled);
+
+
+static Eina_Error
+__eolian_elm_list_focus_on_selection_set_reflect(Eo *obj, Eina_Value val)
+{
+ Eina_Error r = 0; Eina_Bool cval;
+ if (!eina_value_bool_convert(&val, &cval))
+ {
+ r = EINA_ERROR_VALUE_FAILED;
+ goto end;
+ }
+ elm_obj_list_focus_on_selection_set(obj, cval);
+ end:
+ eina_value_flush(&val);
+ return r;
+}
+
+EOAPI EFL_VOID_FUNC_BODYV(elm_obj_list_focus_on_selection_set, EFL_FUNC_CALL(enabled), Eina_Bool enabled);
+
+Eina_Bool _elm_list_focus_on_selection_get(const Eo *obj, Elm_List_Data *pd);
+
+
+static Eina_Value
+__eolian_elm_list_focus_on_selection_get_reflect(Eo *obj)
+{
+ Eina_Bool val = elm_obj_list_focus_on_selection_get(obj);
+ return eina_value_bool_init(val);
+}
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_focus_on_selection_get, Eina_Bool, 0);
+
+void _elm_list_multi_select_set(Eo *obj, Elm_List_Data *pd, Eina_Bool multi);
+
+
+static Eina_Error
+__eolian_elm_list_multi_select_set_reflect(Eo *obj, Eina_Value val)
+{
+ Eina_Error r = 0; Eina_Bool cval;
+ if (!eina_value_bool_convert(&val, &cval))
+ {
+ r = EINA_ERROR_VALUE_FAILED;
+ goto end;
+ }
+ elm_obj_list_multi_select_set(obj, cval);
+ end:
+ eina_value_flush(&val);
+ return r;
+}
+
+EOAPI EFL_VOID_FUNC_BODYV(elm_obj_list_multi_select_set, EFL_FUNC_CALL(multi), Eina_Bool multi);
+
+Eina_Bool _elm_list_multi_select_get(const Eo *obj, Elm_List_Data *pd);
+
+
+static Eina_Value
+__eolian_elm_list_multi_select_get_reflect(Eo *obj)
+{
+ Eina_Bool val = elm_obj_list_multi_select_get(obj);
+ return eina_value_bool_init(val);
+}
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_multi_select_get, Eina_Bool, 0);
+
+void _elm_list_multi_select_mode_set(Eo *obj, Elm_List_Data *pd, Elm_Object_Multi_Select_Mode mode);
+
+EOAPI EFL_VOID_FUNC_BODYV(elm_obj_list_multi_select_mode_set, EFL_FUNC_CALL(mode), Elm_Object_Multi_Select_Mode mode);
+
+Elm_Object_Multi_Select_Mode _elm_list_multi_select_mode_get(const Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_multi_select_mode_get, Elm_Object_Multi_Select_Mode, 2 /* Elm.Object.Multi_Select_Mode.max */);
+
+void _elm_list_mode_set(Eo *obj, Elm_List_Data *pd, Elm_List_Mode mode);
+
+EOAPI EFL_VOID_FUNC_BODYV(elm_obj_list_mode_set, EFL_FUNC_CALL(mode), Elm_List_Mode mode);
+
+Elm_List_Mode _elm_list_mode_get(const Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_mode_get, Elm_List_Mode, 4 /* Elm.List.Mode.last */);
+
+Elm_Widget_Item *_elm_list_selected_item_get(const Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_selected_item_get, Elm_Widget_Item *, NULL);
+
+const Eina_List *_elm_list_items_get(const Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_items_get, const Eina_List *, NULL);
+
+Elm_Widget_Item *_elm_list_first_item_get(const Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_first_item_get, Elm_Widget_Item *, NULL);
+
+const Eina_List *_elm_list_selected_items_get(const Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_selected_items_get, const Eina_List *, NULL);
+
+Elm_Widget_Item *_elm_list_last_item_get(const Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_last_item_get, Elm_Widget_Item *, NULL);
+
+Elm_Widget_Item *_elm_list_item_insert_before(Eo *obj, Elm_List_Data *pd, Elm_Widget_Item *before, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+EOAPI EFL_FUNC_BODYV(elm_obj_list_item_insert_before, Elm_Widget_Item *, NULL, EFL_FUNC_CALL(before, label, icon, end, func, data), Elm_Widget_Item *before, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+void _elm_list_go(Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_VOID_FUNC_BODY(elm_obj_list_go);
+
+Elm_Widget_Item *_elm_list_item_insert_after(Eo *obj, Elm_List_Data *pd, Elm_Widget_Item *after, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+EOAPI EFL_FUNC_BODYV(elm_obj_list_item_insert_after, Elm_Widget_Item *, NULL, EFL_FUNC_CALL(after, label, icon, end, func, data), Elm_Widget_Item *after, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+Elm_Widget_Item *_elm_list_at_xy_item_get(const Eo *obj, Elm_List_Data *pd, int x, int y, int *posret);
+
+EOAPI EFL_FUNC_BODYV_CONST(elm_obj_list_at_xy_item_get, Elm_Widget_Item *, NULL, EFL_FUNC_CALL(x, y, posret), int x, int y, int *posret);
+
+Elm_Widget_Item *_elm_list_item_append(Eo *obj, Elm_List_Data *pd, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+EOAPI EFL_FUNC_BODYV(elm_obj_list_item_append, Elm_Widget_Item *, NULL, EFL_FUNC_CALL(label, icon, end, func, data), const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+Elm_Widget_Item *_elm_list_item_prepend(Eo *obj, Elm_List_Data *pd, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+EOAPI EFL_FUNC_BODYV(elm_obj_list_item_prepend, Elm_Widget_Item *, NULL, EFL_FUNC_CALL(label, icon, end, func, data), const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+void _elm_list_clear(Eo *obj, Elm_List_Data *pd);
+
+EOAPI EFL_VOID_FUNC_BODY(elm_obj_list_clear);
+
+Elm_Widget_Item *_elm_list_item_sorted_insert(Eo *obj, Elm_List_Data *pd, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func);
+
+EOAPI EFL_FUNC_BODYV(elm_obj_list_item_sorted_insert, Elm_Widget_Item *, NULL, EFL_FUNC_CALL(label, icon, end, func, data, cmp_func), const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func);
+
+Efl_Object *_elm_list_efl_object_constructor(Eo *obj, Elm_List_Data *pd);
+
+
+void _elm_list_efl_gfx_entity_position_set(Eo *obj, Elm_List_Data *pd, Eina_Position2D pos);
+
+
+void _elm_list_efl_gfx_entity_size_set(Eo *obj, Elm_List_Data *pd, Eina_Size2D size);
+
+
+void _elm_list_efl_canvas_group_group_member_add(Eo *obj, Elm_List_Data *pd, Efl_Canvas_Object *sub_obj);
+
+
+Eina_Error _elm_list_efl_ui_widget_theme_apply(Eo *obj, Elm_List_Data *pd);
+
+
+void _elm_list_efl_ui_widget_on_access_update(Eo *obj, Elm_List_Data *pd, Eina_Bool enable);
+
+
+Eina_Rect _elm_list_efl_ui_widget_focus_highlight_geometry_get(const Eo *obj, Elm_List_Data *pd);
+
+
+void _elm_list_efl_ui_widget_disabled_set(Eo *obj, Elm_List_Data *pd, Eina_Bool disabled);
+
+
+Eina_Bool _elm_list_efl_ui_focus_object_on_focus_update(Eo *obj, Elm_List_Data *pd);
+
+
+void _elm_list_efl_ui_l10n_translation_update(Eo *obj, Elm_List_Data *pd);
+
+
+Eina_Bool _elm_list_efl_ui_widget_widget_sub_object_del(Eo *obj, Elm_List_Data *pd, Efl_Canvas_Object *sub_obj);
+
+
+Eina_Bool _elm_list_efl_ui_widget_widget_input_event_handler(Eo *obj, Elm_List_Data *pd, const Efl_Event *eo_event, Efl_Canvas_Object *source);
+
+
+Elm_Widget_Item *_elm_list_elm_widget_item_container_focused_item_get(const Eo *obj, Elm_List_Data *pd);
+
+
+Eina_Bool _elm_list_efl_ui_widget_focus_state_apply(Eo *obj, Elm_List_Data *pd, Efl_Ui_Widget_Focus_State current_state, Efl_Ui_Widget_Focus_State *configured_state, Efl_Ui_Widget *redirect);
+
+
+void _elm_list_elm_interface_scrollable_item_loop_enabled_set(Eo *obj, Elm_List_Data *pd, Eina_Bool enable);
+
+
+Eina_Bool _elm_list_elm_interface_scrollable_item_loop_enabled_get(const Eo *obj, Elm_List_Data *pd);
+
+
+void _elm_list_elm_interface_scrollable_policy_set(Eo *obj, Elm_List_Data *pd, Elm_Scroller_Policy hbar, Elm_Scroller_Policy vbar);
+
+
+const Efl_Access_Action_Data *_elm_list_efl_access_widget_action_elm_actions_get(const Eo *obj, Elm_List_Data *pd);
+
+
+Eina_List *_elm_list_efl_access_object_access_children_get(const Eo *obj, Elm_List_Data *pd);
+
+
+int _elm_list_efl_access_selection_selected_children_count_get(const Eo *obj, Elm_List_Data *pd);
+
+
+Efl_Object *_elm_list_efl_access_selection_selected_child_get(const Eo *obj, Elm_List_Data *pd, int selected_child_index);
+
+
+Eina_Bool _elm_list_efl_access_selection_selected_child_deselect(Eo *obj, Elm_List_Data *pd, int child_index);
+
+
+Eina_Bool _elm_list_efl_access_selection_child_select(Eo *obj, Elm_List_Data *pd, int child_index);
+
+
+Eina_Bool _elm_list_efl_access_selection_child_deselect(Eo *obj, Elm_List_Data *pd, int child_index);
+
+
+Eina_Bool _elm_list_efl_access_selection_is_child_selected(Eo *obj, Elm_List_Data *pd, int child_index);
+
+
+Eina_Bool _elm_list_efl_access_selection_all_children_select(Eo *obj, Elm_List_Data *pd);
+
+
+Eina_Bool _elm_list_efl_access_selection_access_selection_clear(Eo *obj, Elm_List_Data *pd);
+
+
+static Eina_Bool
+_elm_list_class_initializer(Efl_Class *klass)
+{
+ const Efl_Object_Ops *opsp = NULL;
+
+ const Efl_Object_Property_Reflection_Ops *ropsp = NULL;
+
+#ifndef ELM_LIST_EXTRA_OPS
+#define ELM_LIST_EXTRA_OPS
+#endif
+
+ EFL_OPS_DEFINE(ops,
+ EFL_OBJECT_OP_FUNC(elm_obj_list_horizontal_set, _elm_list_horizontal_set),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_horizontal_get, _elm_list_horizontal_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_select_mode_set, _elm_list_select_mode_set),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_select_mode_get, _elm_list_select_mode_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_focus_on_selection_set, _elm_list_focus_on_selection_set),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_focus_on_selection_get, _elm_list_focus_on_selection_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_multi_select_set, _elm_list_multi_select_set),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_multi_select_get, _elm_list_multi_select_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_multi_select_mode_set, _elm_list_multi_select_mode_set),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_multi_select_mode_get, _elm_list_multi_select_mode_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_mode_set, _elm_list_mode_set),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_mode_get, _elm_list_mode_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_selected_item_get, _elm_list_selected_item_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_items_get, _elm_list_items_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_first_item_get, _elm_list_first_item_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_selected_items_get, _elm_list_selected_items_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_last_item_get, _elm_list_last_item_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_insert_before, _elm_list_item_insert_before),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_go, _elm_list_go),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_insert_after, _elm_list_item_insert_after),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_at_xy_item_get, _elm_list_at_xy_item_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_append, _elm_list_item_append),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_prepend, _elm_list_item_prepend),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_clear, _elm_list_clear),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_sorted_insert, _elm_list_item_sorted_insert),
+ EFL_OBJECT_OP_FUNC(efl_constructor, _elm_list_efl_object_constructor),
+ EFL_OBJECT_OP_FUNC(efl_gfx_entity_position_set, _elm_list_efl_gfx_entity_position_set),
+ EFL_OBJECT_OP_FUNC(efl_gfx_entity_size_set, _elm_list_efl_gfx_entity_size_set),
+ EFL_OBJECT_OP_FUNC(efl_canvas_group_member_add, _elm_list_efl_canvas_group_group_member_add),
+ EFL_OBJECT_OP_FUNC(efl_ui_widget_theme_apply, _elm_list_efl_ui_widget_theme_apply),
+ EFL_OBJECT_OP_FUNC(efl_ui_widget_on_access_update, _elm_list_efl_ui_widget_on_access_update),
+ EFL_OBJECT_OP_FUNC(efl_ui_widget_focus_highlight_geometry_get, _elm_list_efl_ui_widget_focus_highlight_geometry_get),
+ EFL_OBJECT_OP_FUNC(efl_ui_widget_disabled_set, _elm_list_efl_ui_widget_disabled_set),
+ EFL_OBJECT_OP_FUNC(efl_ui_focus_object_on_focus_update, _elm_list_efl_ui_focus_object_on_focus_update),
+ EFL_OBJECT_OP_FUNC(efl_ui_l10n_translation_update, _elm_list_efl_ui_l10n_translation_update),
+ EFL_OBJECT_OP_FUNC(efl_ui_widget_sub_object_del, _elm_list_efl_ui_widget_widget_sub_object_del),
+ EFL_OBJECT_OP_FUNC(efl_ui_widget_input_event_handler, _elm_list_efl_ui_widget_widget_input_event_handler),
+ EFL_OBJECT_OP_FUNC(elm_widget_item_container_focused_item_get, _elm_list_elm_widget_item_container_focused_item_get),
+ EFL_OBJECT_OP_FUNC(efl_ui_widget_focus_state_apply, _elm_list_efl_ui_widget_focus_state_apply),
+ EFL_OBJECT_OP_FUNC(elm_interface_scrollable_item_loop_enabled_set, _elm_list_elm_interface_scrollable_item_loop_enabled_set),
+ EFL_OBJECT_OP_FUNC(elm_interface_scrollable_item_loop_enabled_get, _elm_list_elm_interface_scrollable_item_loop_enabled_get),
+ EFL_OBJECT_OP_FUNC(elm_interface_scrollable_policy_set, _elm_list_elm_interface_scrollable_policy_set),
+ EFL_OBJECT_OP_FUNC(efl_access_widget_action_elm_actions_get, _elm_list_efl_access_widget_action_elm_actions_get),
+ EFL_OBJECT_OP_FUNC(efl_access_object_access_children_get, _elm_list_efl_access_object_access_children_get),
+ EFL_OBJECT_OP_FUNC(efl_access_selection_selected_children_count_get, _elm_list_efl_access_selection_selected_children_count_get),
+ EFL_OBJECT_OP_FUNC(efl_access_selection_selected_child_get, _elm_list_efl_access_selection_selected_child_get),
+ EFL_OBJECT_OP_FUNC(efl_access_selection_selected_child_deselect, _elm_list_efl_access_selection_selected_child_deselect),
+ EFL_OBJECT_OP_FUNC(efl_access_selection_child_select, _elm_list_efl_access_selection_child_select),
+ EFL_OBJECT_OP_FUNC(efl_access_selection_child_deselect, _elm_list_efl_access_selection_child_deselect),
+ EFL_OBJECT_OP_FUNC(efl_access_selection_is_child_selected, _elm_list_efl_access_selection_is_child_selected),
+ EFL_OBJECT_OP_FUNC(efl_access_selection_all_children_select, _elm_list_efl_access_selection_all_children_select),
+ EFL_OBJECT_OP_FUNC(efl_access_selection_clear, _elm_list_efl_access_selection_access_selection_clear),
+ ELM_LIST_EXTRA_OPS
+ );
+ opsp = &ops;
+
+ static const Efl_Object_Property_Reflection refl_table[] = {
+ {"horizontal", __eolian_elm_list_horizontal_set_reflect, __eolian_elm_list_horizontal_get_reflect},
+ {"focus_on_selection", __eolian_elm_list_focus_on_selection_set_reflect, __eolian_elm_list_focus_on_selection_get_reflect},
+ {"multi_select", __eolian_elm_list_multi_select_set_reflect, __eolian_elm_list_multi_select_get_reflect},
+ };
+ static const Efl_Object_Property_Reflection_Ops rops = {
+ refl_table, EINA_C_ARRAY_LENGTH(refl_table)
+ };
+ ropsp = &rops;
+
+ return efl_class_functions_set(klass, opsp, ropsp);
+}
+
+static const Efl_Class_Description _elm_list_class_desc = {
+ EO_VERSION,
+ "Elm.List",
+ EFL_CLASS_TYPE_REGULAR,
+ sizeof(Elm_List_Data),
+ _elm_list_class_initializer,
+ _elm_list_class_constructor,
+ 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);
+
+#include "elm_list_eo.legacy.c"
diff --git a/src/lib/elementary/elm_list_eo.h b/src/lib/elementary/elm_list_eo.h
new file mode 100644
index 0000000000..4587ed0744
--- /dev/null
+++ b/src/lib/elementary/elm_list_eo.h
@@ -0,0 +1,640 @@
+#ifndef _ELM_LIST_EO_H_
+#define _ELM_LIST_EO_H_
+
+#ifndef _ELM_LIST_EO_CLASS_TYPE
+#define _ELM_LIST_EO_CLASS_TYPE
+
+typedef Eo Elm_List;
+
+#endif
+
+#ifndef _ELM_LIST_EO_TYPES
+#define _ELM_LIST_EO_TYPES
+
+
+#endif
+/** Elementary list class
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_CLASS elm_list_class_get()
+
+EWAPI const Efl_Class *elm_list_class_get(void);
+
+/**
+ * @brief Control horizontal mode on the list object.
+ *
+ * @note Vertical mode is set by default.
+ *
+ * On horizontal mode items are displayed on list from left to right, instead
+ * of from top to bottom. Also, the list will scroll horizontally. Each item
+ * will presents left icon on top and right icon, or end, at the bottom.
+ *
+ * @param[in] obj The object.
+ * @param[in] horizontal @c true to enable horizontal or @c false to disable
+ * it, i.e., to enable vertical mode.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI void elm_obj_list_horizontal_set(Eo *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Control horizontal mode on the list object.
+ *
+ * @note Vertical mode is set by default.
+ *
+ * On horizontal mode items are displayed on list from left to right, instead
+ * of from top to bottom. Also, the list will scroll horizontally. Each item
+ * will presents left icon on top and right icon, or end, at the bottom.
+ *
+ * @param[in] obj The object.
+ *
+ * @return @c true to enable horizontal or @c false to disable it, i.e., to
+ * enable vertical mode.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Eina_Bool elm_obj_list_horizontal_get(const Eo *obj);
+
+/**
+ * @brief Control the list select mode.
+ *
+ * elm_list_select_mode_set() changes item select mode in the list widget. -
+ * #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func
+ * and callback when first becoming selected. Any further clicks will do
+ * nothing, unless you set always select mode. - #ELM_OBJECT_SELECT_MODE_ALWAYS
+ * : This means that, even if selected, every click will make the selected
+ * callbacks be called. - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the
+ * ability to select items entirely and they will neither appear selected nor
+ * call selected callback functions.
+ *
+ * @param[in] obj The object.
+ * @param[in] mode The select mode
+ *
+ * @ingroup Elm_List
+ */
+EOAPI void elm_obj_list_select_mode_set(Eo *obj, Elm_Object_Select_Mode mode);
+
+/**
+ * @brief Control the list select mode.
+ *
+ * elm_list_select_mode_set() changes item select mode in the list widget. -
+ * #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func
+ * and callback when first becoming selected. Any further clicks will do
+ * nothing, unless you set always select mode. - #ELM_OBJECT_SELECT_MODE_ALWAYS
+ * : This means that, even if selected, every click will make the selected
+ * callbacks be called. - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the
+ * ability to select items entirely and they will neither appear selected nor
+ * call selected callback functions.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The select mode
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Object_Select_Mode elm_obj_list_select_mode_get(const Eo *obj);
+
+/**
+ * @brief Control focus upon items selection mode
+ *
+ * When enabled, every selection of an item inside the genlist will
+ * automatically set focus to its first focusable widget from the left. This is
+ * true of course if the selection was made by clicking an unfocusable area in
+ * an item or selecting it with a key movement. Clicking on a focusable widget
+ * inside an item will cause this particular item to get focus as usual.
+ *
+ * @param[in] obj The object.
+ * @param[in] enabled The tree effect status ($true = enabled, @c false =
+ * disabled)
+ *
+ * @ingroup Elm_List
+ */
+EOAPI void elm_obj_list_focus_on_selection_set(Eo *obj, Eina_Bool enabled);
+
+/**
+ * @brief Control focus upon items selection mode
+ *
+ * When enabled, every selection of an item inside the genlist will
+ * automatically set focus to its first focusable widget from the left. This is
+ * true of course if the selection was made by clicking an unfocusable area in
+ * an item or selecting it with a key movement. Clicking on a focusable widget
+ * inside an item will cause this particular item to get focus as usual.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The tree effect status ($true = enabled, @c false = disabled)
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Eina_Bool elm_obj_list_focus_on_selection_get(const Eo *obj);
+
+/**
+ * @brief Control multiple items selection on the list object.
+ *
+ * Disabled by default. If disabled, the user can select a single item of the
+ * list each time. Selected items are highlighted on list. If enabled, many
+ * items can be selected.
+ *
+ * If a selected item is selected again, it will be unselected.
+ *
+ * @param[in] obj The object.
+ * @param[in] multi @c true to enable multi selection or @c false to disable
+ * it.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI void elm_obj_list_multi_select_set(Eo *obj, Eina_Bool multi);
+
+/**
+ * @brief Control multiple items selection on the list object.
+ *
+ * Disabled by default. If disabled, the user can select a single item of the
+ * list each time. Selected items are highlighted on list. If enabled, many
+ * items can be selected.
+ *
+ * If a selected item is selected again, it will be unselected.
+ *
+ * @param[in] obj The object.
+ *
+ * @return @c true to enable multi selection or @c false to disable it.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Eina_Bool elm_obj_list_multi_select_get(const Eo *obj);
+
+/**
+ * @brief Control the list multi select mode.
+ *
+ * - #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever
+ * each item is clicked. - #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only
+ * one item will be selected although multi-selection is enabled, if clicked
+ * without pressing control key. This mode is only available with
+ * multi-selection.
+ *
+ * See: @ref elm_obj_list_multi_select_get
+ *
+ * @param[in] obj The object.
+ * @param[in] mode The multi select mode
+ *
+ * @since 1.8
+ *
+ * @ingroup Elm_List
+ */
+EOAPI void elm_obj_list_multi_select_mode_set(Eo *obj, Elm_Object_Multi_Select_Mode mode);
+
+/**
+ * @brief Control the list multi select mode.
+ *
+ * - #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever
+ * each item is clicked. - #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only
+ * one item will be selected although multi-selection is enabled, if clicked
+ * without pressing control key. This mode is only available with
+ * multi-selection.
+ *
+ * See: @ref elm_obj_list_multi_select_get
+ *
+ * @param[in] obj The object.
+ *
+ * @return The multi select mode
+ *
+ * @since 1.8
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Object_Multi_Select_Mode elm_obj_list_multi_select_mode_get(const Eo *obj);
+
+/**
+ * @brief Control which mode to use for the list object.
+ *
+ * Set list's resize behavior, transverse axis scroll and items cropping. See
+ * each mode's description for more details.
+ *
+ * @note Default value is #ELM_LIST_SCROLL.
+ *
+ * Only one mode at a time can be set. If a previous one was set, it will be
+ * changed by the new mode after this call. Bitmasks won't work here as well.
+ *
+ * @warning This function's behavior will clash with those of
+ * elm_scroller_content_min_limit(), so use either one of them, but not both.
+ *
+ * @param[in] obj The object.
+ * @param[in] mode One of #Elm_List_Mode: #ELM_LIST_COMPRESS, #ELM_LIST_SCROLL,
+ * #ELM_LIST_LIMIT or #ELM_LIST_EXPAND.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI void elm_obj_list_mode_set(Eo *obj, Elm_List_Mode mode);
+
+/**
+ * @brief Control which mode to use for the list object.
+ *
+ * Set list's resize behavior, transverse axis scroll and items cropping. See
+ * each mode's description for more details.
+ *
+ * @note Default value is #ELM_LIST_SCROLL.
+ *
+ * Only one mode at a time can be set. If a previous one was set, it will be
+ * changed by the new mode after this call. Bitmasks won't work here as well.
+ *
+ * @warning This function's behavior will clash with those of
+ * elm_scroller_content_min_limit(), so use either one of them, but not both.
+ *
+ * @param[in] obj The object.
+ *
+ * @return One of #Elm_List_Mode: #ELM_LIST_COMPRESS, #ELM_LIST_SCROLL,
+ * #ELM_LIST_LIMIT or #ELM_LIST_EXPAND.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_List_Mode elm_obj_list_mode_get(const Eo *obj);
+
+/**
+ * @brief Get the selected item.
+ *
+ * The selected item can be unselected with function
+ * elm_list_item_selected_set().
+ *
+ * The selected item always will be highlighted on list.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The selected list item.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_selected_item_get(const Eo *obj);
+
+/**
+ * @brief Get a list of all the list items.
+ *
+ * @param[in] obj The object.
+ *
+ * @return A @c list of list items, #Elm.Widget.Item, or @c NULL on failure.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI const Eina_List *elm_obj_list_items_get(const Eo *obj);
+
+/**
+ * @brief Get the first item in the list
+ *
+ * This returns the first item in the list.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The first item, or NULL if none
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_first_item_get(const Eo *obj);
+
+/**
+ * @brief Return a list of the currently selected list items.
+ *
+ * Multiple items can be selected if multi select is enabled. It can be done
+ * with elm_list_multi_select_set().
+ *
+ * @param[in] obj The object.
+ *
+ * @return An @c list of list items, #Elm.Widget.Item, or @c NULL on failure.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI const Eina_List *elm_obj_list_selected_items_get(const Eo *obj);
+
+/**
+ * @brief Get the last item in the list
+ *
+ * This returns the last item in the list.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The last item, or NULL if none
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_last_item_get(const Eo *obj);
+
+/**
+ * @brief Insert a new item into the list object before item @c before.
+ *
+ * A new item will be created and added to the list. Its position in this list
+ * will be just before item @c before.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] before The list item to insert before.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_item_insert_before(Eo *obj, Elm_Widget_Item *before, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Starts the list.
+ *
+ * @note Call before running show() on the list object. Warning: If not called,
+ * it won't display the list properly.
+ * @param[in] obj The object.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI void elm_obj_list_go(Eo *obj);
+
+/**
+ * @brief Insert a new item into the list object after item @c after.
+ *
+ * A new item will be created and added to the list. Its position in this list
+ * will be just after item @c after.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] after The list item to insert after.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_item_insert_after(Eo *obj, Elm_Widget_Item *after, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Get the item that is at the x, y canvas coords.
+ *
+ * This returns the item at the given coordinates (which are canvas relative,
+ * not object-relative). If an item is at that coordinate, that item handle is
+ * returned, and if @c posret is not NULL, the integer pointed to is set to a
+ * value of -1, 0 or 1, depending if the coordinate is on the upper portion of
+ * that item (-1), on the middle section (0) or on the lower part (1). If NULL
+ * is returned as an item (no item found there), then posret may indicate -1 or
+ * 1 based if the coordinate is above or below all items respectively in the
+ * list.
+ *
+ * @param[in] obj The object.
+ * @param[in] x The input x coordinate
+ * @param[in] y The input y coordinate
+ * @param[out] posret The position relative to the item returned here
+ *
+ * @return The item at the coordinates or NULL if none
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_at_xy_item_get(const Eo *obj, int x, int y, int *posret);
+
+/**
+ * @brief Append a new item to the list object.
+ *
+ * A new item will be created and appended to the list, i.e., will be set as
+ * last item.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_item_append(Eo *obj, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Prepend a new item to the list object.
+ *
+ * A new item will be created and prepended to the list, i.e., will be set as
+ * first item.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_item_prepend(Eo *obj, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/** Remove all list's items.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI void elm_obj_list_clear(Eo *obj);
+
+/**
+ * @brief Insert a new item into the sorted list object.
+ *
+ * @note This function inserts values into a list object assuming it was sorted
+ * and the result will be sorted.
+ *
+ * A new item will be created and added to the list. Its position in this list
+ * will be found comparing the new item with previously inserted items using
+ * function @c cmp_func.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ * @param[in] cmp_func The comparing function to be used to sort list items by
+ * #Elm.Widget.Item item handles. This function will receive two items and
+ * compare them, returning a non-negative integer if the second item should be
+ * place after the first, or negative value if should be placed before.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_item_sorted_insert(Eo *obj, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func);
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_ACTIVATED;
+
+/** Called when activated
+ * @return Efl_Object *
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_ACTIVATED (&(_ELM_LIST_EVENT_ACTIVATED))
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_EDGE_TOP;
+
+/** Called when top edge was reached
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_EDGE_TOP (&(_ELM_LIST_EVENT_EDGE_TOP))
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_EDGE_BOTTOM;
+
+/** Called when bottom edge was reached
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_EDGE_BOTTOM (&(_ELM_LIST_EVENT_EDGE_BOTTOM))
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_EDGE_LEFT;
+
+/** Called when left edge was reached
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_EDGE_LEFT (&(_ELM_LIST_EVENT_EDGE_LEFT))
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_EDGE_RIGHT;
+
+/** Called when right edge was reached
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_EDGE_RIGHT (&(_ELM_LIST_EVENT_EDGE_RIGHT))
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_SWIPE;
+
+/** Called when swipe is detected
+ * @return Efl_Object *
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_SWIPE (&(_ELM_LIST_EVENT_SWIPE))
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_HIGHLIGHTED;
+
+/** Called when highlighted
+ * @return Efl_Object *
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_HIGHLIGHTED (&(_ELM_LIST_EVENT_HIGHLIGHTED))
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_UNHIGHLIGHTED;
+
+/** Called when no longer highlighted
+ * @return Efl_Object *
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_UNHIGHLIGHTED (&(_ELM_LIST_EVENT_UNHIGHLIGHTED))
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_ITEM_FOCUSED;
+
+/** Called when item got focus
+ * @return Efl_Object *
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_ITEM_FOCUSED (&(_ELM_LIST_EVENT_ITEM_FOCUSED))
+
+EWAPI extern const Efl_Event_Description _ELM_LIST_EVENT_ITEM_UNFOCUSED;
+
+/** Called when item no longer has focus
+ * @return Efl_Object *
+ *
+ * @ingroup Elm_List
+ */
+#define ELM_LIST_EVENT_ITEM_UNFOCUSED (&(_ELM_LIST_EVENT_ITEM_UNFOCUSED))
+
+#endif
diff --git a/src/lib/elementary/elm_list_eo.legacy.c b/src/lib/elementary/elm_list_eo.legacy.c
new file mode 100644
index 0000000000..40f09ef183
--- /dev/null
+++ b/src/lib/elementary/elm_list_eo.legacy.c
@@ -0,0 +1,150 @@
+
+EAPI void
+elm_list_horizontal_set(Elm_List *obj, Eina_Bool horizontal)
+{
+ elm_obj_list_horizontal_set(obj, horizontal);
+}
+
+EAPI Eina_Bool
+elm_list_horizontal_get(const Elm_List *obj)
+{
+ return elm_obj_list_horizontal_get(obj);
+}
+
+EAPI void
+elm_list_select_mode_set(Elm_List *obj, Elm_Object_Select_Mode mode)
+{
+ elm_obj_list_select_mode_set(obj, mode);
+}
+
+EAPI Elm_Object_Select_Mode
+elm_list_select_mode_get(const Elm_List *obj)
+{
+ return elm_obj_list_select_mode_get(obj);
+}
+
+EAPI void
+elm_list_focus_on_selection_set(Elm_List *obj, Eina_Bool enabled)
+{
+ elm_obj_list_focus_on_selection_set(obj, enabled);
+}
+
+EAPI Eina_Bool
+elm_list_focus_on_selection_get(const Elm_List *obj)
+{
+ return elm_obj_list_focus_on_selection_get(obj);
+}
+
+EAPI void
+elm_list_multi_select_set(Elm_List *obj, Eina_Bool multi)
+{
+ elm_obj_list_multi_select_set(obj, multi);
+}
+
+EAPI Eina_Bool
+elm_list_multi_select_get(const Elm_List *obj)
+{
+ return elm_obj_list_multi_select_get(obj);
+}
+
+EAPI void
+elm_list_multi_select_mode_set(Elm_List *obj, Elm_Object_Multi_Select_Mode mode)
+{
+ elm_obj_list_multi_select_mode_set(obj, mode);
+}
+
+EAPI Elm_Object_Multi_Select_Mode
+elm_list_multi_select_mode_get(const Elm_List *obj)
+{
+ return elm_obj_list_multi_select_mode_get(obj);
+}
+
+EAPI void
+elm_list_mode_set(Elm_List *obj, Elm_List_Mode mode)
+{
+ elm_obj_list_mode_set(obj, mode);
+}
+
+EAPI Elm_List_Mode
+elm_list_mode_get(const Elm_List *obj)
+{
+ return elm_obj_list_mode_get(obj);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_selected_item_get(const Elm_List *obj)
+{
+ return elm_obj_list_selected_item_get(obj);
+}
+
+EAPI const Eina_List *
+elm_list_items_get(const Elm_List *obj)
+{
+ return elm_obj_list_items_get(obj);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_first_item_get(const Elm_List *obj)
+{
+ return elm_obj_list_first_item_get(obj);
+}
+
+EAPI const Eina_List *
+elm_list_selected_items_get(const Elm_List *obj)
+{
+ return elm_obj_list_selected_items_get(obj);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_last_item_get(const Elm_List *obj)
+{
+ return elm_obj_list_last_item_get(obj);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_item_insert_before(Elm_List *obj, Elm_Widget_Item *before, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data)
+{
+ return elm_obj_list_item_insert_before(obj, before, label, icon, end, func, data);
+}
+
+EAPI void
+elm_list_go(Elm_List *obj)
+{
+ elm_obj_list_go(obj);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_item_insert_after(Elm_List *obj, Elm_Widget_Item *after, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data)
+{
+ return elm_obj_list_item_insert_after(obj, after, label, icon, end, func, data);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_at_xy_item_get(const Elm_List *obj, int x, int y, int *posret)
+{
+ return elm_obj_list_at_xy_item_get(obj, x, y, posret);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_item_append(Elm_List *obj, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data)
+{
+ return elm_obj_list_item_append(obj, label, icon, end, func, data);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_item_prepend(Elm_List *obj, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data)
+{
+ return elm_obj_list_item_prepend(obj, label, icon, end, func, data);
+}
+
+EAPI void
+elm_list_clear(Elm_List *obj)
+{
+ elm_obj_list_clear(obj);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_item_sorted_insert(Elm_List *obj, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func)
+{
+ return elm_obj_list_item_sorted_insert(obj, label, icon, end, func, data, cmp_func);
+}
diff --git a/src/lib/elementary/elm_list_eo.legacy.h b/src/lib/elementary/elm_list_eo.legacy.h
new file mode 100644
index 0000000000..6885674baf
--- /dev/null
+++ b/src/lib/elementary/elm_list_eo.legacy.h
@@ -0,0 +1,547 @@
+#ifndef _ELM_LIST_EO_LEGACY_H_
+#define _ELM_LIST_EO_LEGACY_H_
+
+#ifndef _ELM_LIST_EO_CLASS_TYPE
+#define _ELM_LIST_EO_CLASS_TYPE
+
+typedef Eo Elm_List;
+
+#endif
+
+#ifndef _ELM_LIST_EO_TYPES
+#define _ELM_LIST_EO_TYPES
+
+
+#endif
+
+/**
+ * @brief Control horizontal mode on the list object.
+ *
+ * @note Vertical mode is set by default.
+ *
+ * On horizontal mode items are displayed on list from left to right, instead
+ * of from top to bottom. Also, the list will scroll horizontally. Each item
+ * will presents left icon on top and right icon, or end, at the bottom.
+ *
+ * @param[in] obj The object.
+ * @param[in] horizontal @c true to enable horizontal or @c false to disable
+ * it, i.e., to enable vertical mode.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI void elm_list_horizontal_set(Elm_List *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Control horizontal mode on the list object.
+ *
+ * @note Vertical mode is set by default.
+ *
+ * On horizontal mode items are displayed on list from left to right, instead
+ * of from top to bottom. Also, the list will scroll horizontally. Each item
+ * will presents left icon on top and right icon, or end, at the bottom.
+ *
+ * @param[in] obj The object.
+ *
+ * @return @c true to enable horizontal or @c false to disable it, i.e., to
+ * enable vertical mode.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Eina_Bool elm_list_horizontal_get(const Elm_List *obj);
+
+/**
+ * @brief Control the list select mode.
+ *
+ * elm_list_select_mode_set() changes item select mode in the list widget. -
+ * #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func
+ * and callback when first becoming selected. Any further clicks will do
+ * nothing, unless you set always select mode. - #ELM_OBJECT_SELECT_MODE_ALWAYS
+ * : This means that, even if selected, every click will make the selected
+ * callbacks be called. - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the
+ * ability to select items entirely and they will neither appear selected nor
+ * call selected callback functions.
+ *
+ * @param[in] obj The object.
+ * @param[in] mode The select mode
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI void elm_list_select_mode_set(Elm_List *obj, Elm_Object_Select_Mode mode);
+
+/**
+ * @brief Control the list select mode.
+ *
+ * elm_list_select_mode_set() changes item select mode in the list widget. -
+ * #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func
+ * and callback when first becoming selected. Any further clicks will do
+ * nothing, unless you set always select mode. - #ELM_OBJECT_SELECT_MODE_ALWAYS
+ * : This means that, even if selected, every click will make the selected
+ * callbacks be called. - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the
+ * ability to select items entirely and they will neither appear selected nor
+ * call selected callback functions.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The select mode
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Object_Select_Mode elm_list_select_mode_get(const Elm_List *obj);
+
+/**
+ * @brief Control focus upon items selection mode
+ *
+ * When enabled, every selection of an item inside the genlist will
+ * automatically set focus to its first focusable widget from the left. This is
+ * true of course if the selection was made by clicking an unfocusable area in
+ * an item or selecting it with a key movement. Clicking on a focusable widget
+ * inside an item will cause this particular item to get focus as usual.
+ *
+ * @param[in] obj The object.
+ * @param[in] enabled The tree effect status ($true = enabled, @c false =
+ * disabled)
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI void elm_list_focus_on_selection_set(Elm_List *obj, Eina_Bool enabled);
+
+/**
+ * @brief Control focus upon items selection mode
+ *
+ * When enabled, every selection of an item inside the genlist will
+ * automatically set focus to its first focusable widget from the left. This is
+ * true of course if the selection was made by clicking an unfocusable area in
+ * an item or selecting it with a key movement. Clicking on a focusable widget
+ * inside an item will cause this particular item to get focus as usual.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The tree effect status ($true = enabled, @c false = disabled)
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Eina_Bool elm_list_focus_on_selection_get(const Elm_List *obj);
+
+/**
+ * @brief Control multiple items selection on the list object.
+ *
+ * Disabled by default. If disabled, the user can select a single item of the
+ * list each time. Selected items are highlighted on list. If enabled, many
+ * items can be selected.
+ *
+ * If a selected item is selected again, it will be unselected.
+ *
+ * @param[in] obj The object.
+ * @param[in] multi @c true to enable multi selection or @c false to disable
+ * it.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI void elm_list_multi_select_set(Elm_List *obj, Eina_Bool multi);
+
+/**
+ * @brief Control multiple items selection on the list object.
+ *
+ * Disabled by default. If disabled, the user can select a single item of the
+ * list each time. Selected items are highlighted on list. If enabled, many
+ * items can be selected.
+ *
+ * If a selected item is selected again, it will be unselected.
+ *
+ * @param[in] obj The object.
+ *
+ * @return @c true to enable multi selection or @c false to disable it.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Eina_Bool elm_list_multi_select_get(const Elm_List *obj);
+
+/**
+ * @brief Control the list multi select mode.
+ *
+ * - #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever
+ * each item is clicked. - #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only
+ * one item will be selected although multi-selection is enabled, if clicked
+ * without pressing control key. This mode is only available with
+ * multi-selection.
+ *
+ * See: @ref elm_list_multi_select_get
+ *
+ * @param[in] obj The object.
+ * @param[in] mode The multi select mode
+ *
+ * @since 1.8
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI void elm_list_multi_select_mode_set(Elm_List *obj, Elm_Object_Multi_Select_Mode mode);
+
+/**
+ * @brief Control the list multi select mode.
+ *
+ * - #ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT : select/unselect items whenever
+ * each item is clicked. - #ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL : Only
+ * one item will be selected although multi-selection is enabled, if clicked
+ * without pressing control key. This mode is only available with
+ * multi-selection.
+ *
+ * See: @ref elm_list_multi_select_get
+ *
+ * @param[in] obj The object.
+ *
+ * @return The multi select mode
+ *
+ * @since 1.8
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Object_Multi_Select_Mode elm_list_multi_select_mode_get(const Elm_List *obj);
+
+/**
+ * @brief Control which mode to use for the list object.
+ *
+ * Set list's resize behavior, transverse axis scroll and items cropping. See
+ * each mode's description for more details.
+ *
+ * @note Default value is #ELM_LIST_SCROLL.
+ *
+ * Only one mode at a time can be set. If a previous one was set, it will be
+ * changed by the new mode after this call. Bitmasks won't work here as well.
+ *
+ * @warning This function's behavior will clash with those of
+ * elm_scroller_content_min_limit(), so use either one of them, but not both.
+ *
+ * @param[in] obj The object.
+ * @param[in] mode One of #Elm_List_Mode: #ELM_LIST_COMPRESS, #ELM_LIST_SCROLL,
+ * #ELM_LIST_LIMIT or #ELM_LIST_EXPAND.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI void elm_list_mode_set(Elm_List *obj, Elm_List_Mode mode);
+
+/**
+ * @brief Control which mode to use for the list object.
+ *
+ * Set list's resize behavior, transverse axis scroll and items cropping. See
+ * each mode's description for more details.
+ *
+ * @note Default value is #ELM_LIST_SCROLL.
+ *
+ * Only one mode at a time can be set. If a previous one was set, it will be
+ * changed by the new mode after this call. Bitmasks won't work here as well.
+ *
+ * @warning This function's behavior will clash with those of
+ * elm_scroller_content_min_limit(), so use either one of them, but not both.
+ *
+ * @param[in] obj The object.
+ *
+ * @return One of #Elm_List_Mode: #ELM_LIST_COMPRESS, #ELM_LIST_SCROLL,
+ * #ELM_LIST_LIMIT or #ELM_LIST_EXPAND.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_List_Mode elm_list_mode_get(const Elm_List *obj);
+
+/**
+ * @brief Get the selected item.
+ *
+ * The selected item can be unselected with function
+ * elm_list_item_selected_set().
+ *
+ * The selected item always will be highlighted on list.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The selected list item.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Widget_Item *elm_list_selected_item_get(const Elm_List *obj);
+
+/**
+ * @brief Get a list of all the list items.
+ *
+ * @param[in] obj The object.
+ *
+ * @return A @c list of list items, #Elm.Widget.Item, or @c NULL on failure.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI const Eina_List *elm_list_items_get(const Elm_List *obj);
+
+/**
+ * @brief Get the first item in the list
+ *
+ * This returns the first item in the list.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The first item, or NULL if none
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Widget_Item *elm_list_first_item_get(const Elm_List *obj);
+
+/**
+ * @brief Return a list of the currently selected list items.
+ *
+ * Multiple items can be selected if multi select is enabled. It can be done
+ * with elm_list_multi_select_set().
+ *
+ * @param[in] obj The object.
+ *
+ * @return An @c list of list items, #Elm.Widget.Item, or @c NULL on failure.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI const Eina_List *elm_list_selected_items_get(const Elm_List *obj);
+
+/**
+ * @brief Get the last item in the list
+ *
+ * This returns the last item in the list.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The last item, or NULL if none
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Widget_Item *elm_list_last_item_get(const Elm_List *obj);
+
+/**
+ * @brief Insert a new item into the list object before item @c before.
+ *
+ * A new item will be created and added to the list. Its position in this list
+ * will be just before item @c before.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] before The list item to insert before.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Widget_Item *elm_list_item_insert_before(Elm_List *obj, Elm_Widget_Item *before, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Starts the list.
+ *
+ * @note Call before running show() on the list object. Warning: If not called,
+ * it won't display the list properly.
+ * @param[in] obj The object.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI void elm_list_go(Elm_List *obj);
+
+/**
+ * @brief Insert a new item into the list object after item @c after.
+ *
+ * A new item will be created and added to the list. Its position in this list
+ * will be just after item @c after.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] after The list item to insert after.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Widget_Item *elm_list_item_insert_after(Elm_List *obj, Elm_Widget_Item *after, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Get the item that is at the x, y canvas coords.
+ *
+ * This returns the item at the given coordinates (which are canvas relative,
+ * not object-relative). If an item is at that coordinate, that item handle is
+ * returned, and if @c posret is not NULL, the integer pointed to is set to a
+ * value of -1, 0 or 1, depending if the coordinate is on the upper portion of
+ * that item (-1), on the middle section (0) or on the lower part (1). If NULL
+ * is returned as an item (no item found there), then posret may indicate -1 or
+ * 1 based if the coordinate is above or below all items respectively in the
+ * list.
+ *
+ * @param[in] obj The object.
+ * @param[in] x The input x coordinate
+ * @param[in] y The input y coordinate
+ * @param[out] posret The position relative to the item returned here
+ *
+ * @return The item at the coordinates or NULL if none
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Widget_Item *elm_list_at_xy_item_get(const Elm_List *obj, int x, int y, int *posret);
+
+/**
+ * @brief Append a new item to the list object.
+ *
+ * A new item will be created and appended to the list, i.e., will be set as
+ * last item.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Widget_Item *elm_list_item_append(Elm_List *obj, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Prepend a new item to the list object.
+ *
+ * A new item will be created and prepended to the list, i.e., will be set as
+ * first item.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Widget_Item *elm_list_item_prepend(Elm_List *obj, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data);
+
+/** Remove all list's items.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI void elm_list_clear(Elm_List *obj);
+
+/**
+ * @brief Insert a new item into the sorted list object.
+ *
+ * @note This function inserts values into a list object assuming it was sorted
+ * and the result will be sorted.
+ *
+ * A new item will be created and added to the list. Its position in this list
+ * will be found comparing the new item with previously inserted items using
+ * function @c cmp_func.
+ *
+ * Items created with this method can be deleted with elm_object_item_del().
+ *
+ * Associated @c data can be properly freed when item is deleted if a callback
+ * function is set with elm_object_item_del_cb_set().
+ *
+ * If a function is passed as argument, it will be called every time this item
+ * is selected, i.e., the user clicks over an unselected item. If always select
+ * is enabled it will call this function every time user clicks over an item
+ * (already selected or not). If such function isn't needed, just passing
+ * @c NULL as @c func is enough. The same should be done for @c data.
+ *
+ * @note Remember that the label parameter is copied inside the list. So if an
+ * application dynamically allocated the label, the application should free the
+ * label after this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] label The label of the list item.
+ * @param[in] icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created with
+ * elm_icon_add().
+ * @param[in] end The icon object to use for the right side of the item. An
+ * icon can be any Evas object.
+ * @param[in] func The function to call when the item is clicked.
+ * @param[in] data The data to associate with the item for related callbacks.
+ * @param[in] cmp_func The comparing function to be used to sort list items by
+ * #Elm.Widget.Item item handles. This function will receive two items and
+ * compare them, returning a non-negative integer if the second item should be
+ * place after the first, or negative value if should be placed before.
+ *
+ * @return The created item or @c NULL upon failure.
+ *
+ * @ingroup Elm_List_Group
+ */
+EAPI Elm_Widget_Item *elm_list_item_sorted_insert(Elm_List *obj, const char *label, Efl_Canvas_Object *icon, Efl_Canvas_Object *end, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func);
+
+#endif
diff --git a/src/lib/elementary/elm_list_item.eo b/src/lib/elementary/elm_list_item.eo
deleted file mode 100644
index c3d18ba99f..0000000000
--- a/src/lib/elementary/elm_list_item.eo
+++ /dev/null
@@ -1,123 +0,0 @@
-class Elm.List.Item extends Elm.Widget.Item implements Efl.Ui.Legacy
-{
- [[Elementary list item class]]
- legacy_prefix: elm_list_item;
- eo_prefix: elm_obj_list_item;
- methods {
- @property separator {
- get {
- [[Get a value whether item is a separator or not.]]
- }
- set {
- [[Set or unset item as a separator.
-
- Items aren't set as separator by default.
-
- If set as separator it will display separator theme,
- so won't display icons or label.
- ]]
- }
- values {
- setting: bool; [[$true means item $it is a separator.
- $false indicates it's not.]]
- }
- }
- @property selected {
- get {
- [[Get whether the item is selected or not.]]
- }
- set {
- [[Set the selected state of an item.
-
- This sets the selected state of the given item.
-
- If a new item is selected the previously selected
- will be unselected, unless multiple selection is
- enabled with \@ref elm_list_multi_select_set.
- Previously selected item can be get with function
- \@ref elm_list_selected_item_get.
-
- Selected items will be highlighted.
- ]]
- }
- values {
- selected: bool; [[The selected state.]]
- }
- }
- @property object {
- get {
- [[Get the real Evas(Edje) object created to implement
- the view of a given list item.
-
- Base object is the $Evas_Object that represents that
- item.
- ]]
- }
- values {
- obj: Efl.Canvas.Object; [[The base Edje object associated with the item.]]
- }
- }
- @property prev {
- get {
- [[Get the item before the item in list.
-
- Note: If it is the first item, $null will be returned.
- ]]
- legacy: elm_list_item_prev;
- }
- values {
- item: Elm.Widget.Item; [[The item before or $null.]]
- }
- }
- @property next {
- get {
- [[Get the item after the item in list.
-
- Note: If it is the last item, $null will be returned.
- ]]
- legacy: elm_list_item_next;
- }
- values {
- item: Elm.Widget.Item; [[The item after or $null.]]
- }
- }
- /* init { FIXME
- params {
- Evas_Smart_Cb func;
- const(void_ptr) data;
- }
- }*/
- show {
- [[Show item in the list view.
-
- It won't animate list until item is visible. If such
- behavior is wanted, use @.bring_in instead.
- ]]
- }
- bring_in {
- [[Bring in the given item to list view.
-
- This causes list to jump to the given item and show it
- (by scrolling), if it is not fully visible.
-
- This may use animation to do so and take a period of time.
-
- If animation isn't wanted, @.show can be used.
- ]]
- }
- }
- implements {
- Efl.Object.constructor;
- Efl.Object.invalidate;
- Efl.Object.destructor;
- Elm.Widget.Item.disable;
- Elm.Widget.Item.del_pre;
- Elm.Widget.Item.signal_emit;
- Elm.Widget.Item.item_focus { get; set; }
- Elm.Widget.Item.part_text { get; set; }
- Elm.Widget.Item.part_content { get; set; }
- Elm.Widget.Item.part_content_unset;
- Efl.Access.Object.i18n_name { get; }
- Efl.Access.Object.state_set { get; }
- }
-}
diff --git a/src/lib/elementary/elm_list_item_eo.c b/src/lib/elementary/elm_list_item_eo.c
new file mode 100644
index 0000000000..358b9a2284
--- /dev/null
+++ b/src/lib/elementary/elm_list_item_eo.c
@@ -0,0 +1,195 @@
+
+void _elm_list_item_separator_set(Eo *obj, Elm_List_Item_Data *pd, Eina_Bool setting);
+
+
+static Eina_Error
+__eolian_elm_list_item_separator_set_reflect(Eo *obj, Eina_Value val)
+{
+ Eina_Error r = 0; Eina_Bool cval;
+ if (!eina_value_bool_convert(&val, &cval))
+ {
+ r = EINA_ERROR_VALUE_FAILED;
+ goto end;
+ }
+ elm_obj_list_item_separator_set(obj, cval);
+ end:
+ eina_value_flush(&val);
+ return r;
+}
+
+EOAPI EFL_VOID_FUNC_BODYV(elm_obj_list_item_separator_set, EFL_FUNC_CALL(setting), Eina_Bool setting);
+
+Eina_Bool _elm_list_item_separator_get(const Eo *obj, Elm_List_Item_Data *pd);
+
+
+static Eina_Value
+__eolian_elm_list_item_separator_get_reflect(Eo *obj)
+{
+ Eina_Bool val = elm_obj_list_item_separator_get(obj);
+ return eina_value_bool_init(val);
+}
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_item_separator_get, Eina_Bool, 0);
+
+void _elm_list_item_selected_set(Eo *obj, Elm_List_Item_Data *pd, Eina_Bool selected);
+
+
+static Eina_Error
+__eolian_elm_list_item_selected_set_reflect(Eo *obj, Eina_Value val)
+{
+ Eina_Error r = 0; Eina_Bool cval;
+ if (!eina_value_bool_convert(&val, &cval))
+ {
+ r = EINA_ERROR_VALUE_FAILED;
+ goto end;
+ }
+ elm_obj_list_item_selected_set(obj, cval);
+ end:
+ eina_value_flush(&val);
+ return r;
+}
+
+EOAPI EFL_VOID_FUNC_BODYV(elm_obj_list_item_selected_set, EFL_FUNC_CALL(selected), Eina_Bool selected);
+
+Eina_Bool _elm_list_item_selected_get(const Eo *obj, Elm_List_Item_Data *pd);
+
+
+static Eina_Value
+__eolian_elm_list_item_selected_get_reflect(Eo *obj)
+{
+ Eina_Bool val = elm_obj_list_item_selected_get(obj);
+ return eina_value_bool_init(val);
+}
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_item_selected_get, Eina_Bool, 0);
+
+Efl_Canvas_Object *_elm_list_item_object_get(const Eo *obj, Elm_List_Item_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_item_object_get, Efl_Canvas_Object *, NULL);
+
+Elm_Widget_Item *_elm_list_item_prev_get(const Eo *obj, Elm_List_Item_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_item_prev_get, Elm_Widget_Item *, NULL);
+
+Elm_Widget_Item *_elm_list_item_next_get(const Eo *obj, Elm_List_Item_Data *pd);
+
+EOAPI EFL_FUNC_BODY_CONST(elm_obj_list_item_next_get, Elm_Widget_Item *, NULL);
+
+void _elm_list_item_show(Eo *obj, Elm_List_Item_Data *pd);
+
+EOAPI EFL_VOID_FUNC_BODY(elm_obj_list_item_show);
+
+void _elm_list_item_bring_in(Eo *obj, Elm_List_Item_Data *pd);
+
+EOAPI EFL_VOID_FUNC_BODY(elm_obj_list_item_bring_in);
+
+Efl_Object *_elm_list_item_efl_object_constructor(Eo *obj, Elm_List_Item_Data *pd);
+
+
+void _elm_list_item_efl_object_invalidate(Eo *obj, Elm_List_Item_Data *pd);
+
+
+void _elm_list_item_efl_object_destructor(Eo *obj, Elm_List_Item_Data *pd);
+
+
+void _elm_list_item_elm_widget_item_disable(Eo *obj, Elm_List_Item_Data *pd);
+
+
+void _elm_list_item_elm_widget_item_del_pre(Eo *obj, Elm_List_Item_Data *pd);
+
+
+void _elm_list_item_elm_widget_item_signal_emit(Eo *obj, Elm_List_Item_Data *pd, const char *emission, const char *source);
+
+
+void _elm_list_item_elm_widget_item_item_focus_set(Eo *obj, Elm_List_Item_Data *pd, Eina_Bool focused);
+
+
+Eina_Bool _elm_list_item_elm_widget_item_item_focus_get(const Eo *obj, Elm_List_Item_Data *pd);
+
+
+void _elm_list_item_elm_widget_item_part_text_set(Eo *obj, Elm_List_Item_Data *pd, const char *part, const char *label);
+
+
+const char *_elm_list_item_elm_widget_item_part_text_get(const Eo *obj, Elm_List_Item_Data *pd, const char *part);
+
+
+void _elm_list_item_elm_widget_item_part_content_set(Eo *obj, Elm_List_Item_Data *pd, const char *part, Efl_Canvas_Object *content);
+
+
+Efl_Canvas_Object *_elm_list_item_elm_widget_item_part_content_get(const Eo *obj, Elm_List_Item_Data *pd, const char *part);
+
+
+Efl_Canvas_Object *_elm_list_item_elm_widget_item_part_content_unset(Eo *obj, Elm_List_Item_Data *pd, const char *part);
+
+
+const char *_elm_list_item_efl_access_object_i18n_name_get(const Eo *obj, Elm_List_Item_Data *pd);
+
+
+Efl_Access_State_Set _elm_list_item_efl_access_object_state_set_get(const Eo *obj, Elm_List_Item_Data *pd);
+
+
+static Eina_Bool
+_elm_list_item_class_initializer(Efl_Class *klass)
+{
+ const Efl_Object_Ops *opsp = NULL;
+
+ const Efl_Object_Property_Reflection_Ops *ropsp = NULL;
+
+#ifndef ELM_LIST_ITEM_EXTRA_OPS
+#define ELM_LIST_ITEM_EXTRA_OPS
+#endif
+
+ EFL_OPS_DEFINE(ops,
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_separator_set, _elm_list_item_separator_set),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_separator_get, _elm_list_item_separator_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_selected_set, _elm_list_item_selected_set),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_selected_get, _elm_list_item_selected_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_object_get, _elm_list_item_object_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_prev_get, _elm_list_item_prev_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_next_get, _elm_list_item_next_get),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_show, _elm_list_item_show),
+ EFL_OBJECT_OP_FUNC(elm_obj_list_item_bring_in, _elm_list_item_bring_in),
+ EFL_OBJECT_OP_FUNC(efl_constructor, _elm_list_item_efl_object_constructor),
+ EFL_OBJECT_OP_FUNC(efl_invalidate, _elm_list_item_efl_object_invalidate),
+ EFL_OBJECT_OP_FUNC(efl_destructor, _elm_list_item_efl_object_destructor),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_disable, _elm_list_item_elm_widget_item_disable),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_del_pre, _elm_list_item_elm_widget_item_del_pre),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_signal_emit, _elm_list_item_elm_widget_item_signal_emit),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_focus_set, _elm_list_item_elm_widget_item_item_focus_set),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_focus_get, _elm_list_item_elm_widget_item_item_focus_get),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_part_text_set, _elm_list_item_elm_widget_item_part_text_set),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_part_text_get, _elm_list_item_elm_widget_item_part_text_get),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_part_content_set, _elm_list_item_elm_widget_item_part_content_set),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_part_content_get, _elm_list_item_elm_widget_item_part_content_get),
+ EFL_OBJECT_OP_FUNC(elm_wdg_item_part_content_unset, _elm_list_item_elm_widget_item_part_content_unset),
+ EFL_OBJECT_OP_FUNC(efl_access_object_i18n_name_get, _elm_list_item_efl_access_object_i18n_name_get),
+ EFL_OBJECT_OP_FUNC(efl_access_object_state_set_get, _elm_list_item_efl_access_object_state_set_get),
+ ELM_LIST_ITEM_EXTRA_OPS
+ );
+ opsp = &ops;
+
+ static const Efl_Object_Property_Reflection refl_table[] = {
+ {"separator", __eolian_elm_list_item_separator_set_reflect, __eolian_elm_list_item_separator_get_reflect},
+ {"selected", __eolian_elm_list_item_selected_set_reflect, __eolian_elm_list_item_selected_get_reflect},
+ };
+ static const Efl_Object_Property_Reflection_Ops rops = {
+ refl_table, EINA_C_ARRAY_LENGTH(refl_table)
+ };
+ ropsp = &rops;
+
+ return efl_class_functions_set(klass, opsp, ropsp);
+}
+
+static const Efl_Class_Description _elm_list_item_class_desc = {
+ EO_VERSION,
+ "Elm.List.Item",
+ EFL_CLASS_TYPE_REGULAR,
+ sizeof(Elm_List_Item_Data),
+ _elm_list_item_class_initializer,
+ NULL,
+ NULL
+};
+
+EFL_DEFINE_CLASS(elm_list_item_class_get, &_elm_list_item_class_desc, ELM_WIDGET_ITEM_CLASS, EFL_UI_LEGACY_INTERFACE, NULL);
+
+#include "elm_list_item_eo.legacy.c"
diff --git a/src/lib/elementary/elm_list_item_eo.h b/src/lib/elementary/elm_list_item_eo.h
new file mode 100644
index 0000000000..8aef9230a9
--- /dev/null
+++ b/src/lib/elementary/elm_list_item_eo.h
@@ -0,0 +1,148 @@
+#ifndef _ELM_LIST_ITEM_EO_H_
+#define _ELM_LIST_ITEM_EO_H_
+
+#ifndef _ELM_LIST_ITEM_EO_CLASS_TYPE
+#define _ELM_LIST_ITEM_EO_CLASS_TYPE
+
+typedef Eo Elm_List_Item;
+
+#endif
+
+#ifndef _ELM_LIST_ITEM_EO_TYPES
+#define _ELM_LIST_ITEM_EO_TYPES
+
+
+#endif
+/** Elementary list item class
+ *
+ * @ingroup Elm_List_Item
+ */
+#define ELM_LIST_ITEM_CLASS elm_list_item_class_get()
+
+EWAPI const Efl_Class *elm_list_item_class_get(void);
+
+/**
+ * @brief Set or unset item as a separator.
+ *
+ * Items aren't set as separator by default.
+ *
+ * If set as separator it will display separator theme, so won't display icons
+ * or label.
+ *
+ * @param[in] obj The object.
+ * @param[in] setting @c true means item @c it is a separator. @c false
+ * indicates it's not.
+ *
+ * @ingroup Elm_List_Item
+ */
+EOAPI void elm_obj_list_item_separator_set(Eo *obj, Eina_Bool setting);
+
+/**
+ * @brief Get a value whether item is a separator or not.
+ *
+ * @param[in] obj The object.
+ *
+ * @return @c true means item @c it is a separator. @c false indicates it's
+ * not.
+ *
+ * @ingroup Elm_List_Item
+ */
+EOAPI Eina_Bool elm_obj_list_item_separator_get(const Eo *obj);
+
+/**
+ * @brief Set the selected state of an item.
+ *
+ * This sets the selected state of the given item.
+ *
+ * If a new item is selected the previously selected will be unselected, unless
+ * multiple selection is enabled with @ref elm_list_multi_select_set.
+ * Previously selected item can be get with function @ref
+ * elm_list_selected_item_get.
+ *
+ * Selected items will be highlighted.
+ *
+ * @param[in] obj The object.
+ * @param[in] selected The selected state.
+ *
+ * @ingroup Elm_List_Item
+ */
+EOAPI void elm_obj_list_item_selected_set(Eo *obj, Eina_Bool selected);
+
+/**
+ * @brief Get whether the item is selected or not.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The selected state.
+ *
+ * @ingroup Elm_List_Item
+ */
+EOAPI Eina_Bool elm_obj_list_item_selected_get(const Eo *obj);
+
+/**
+ * @brief Get the real Evas(Edje) object created to implement the view of a
+ * given list item.
+ *
+ * Base object is the @c Evas_Object that represents that item.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The base Edje object associated with the item.
+ *
+ * @ingroup Elm_List_Item
+ */
+EOAPI Efl_Canvas_Object *elm_obj_list_item_object_get(const Eo *obj);
+
+/**
+ * @brief Get the item before the item in list.
+ *
+ * @note If it is the first item, @c null will be returned.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The item before or @c null.
+ *
+ * @ingroup Elm_List_Item
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_item_prev_get(const Eo *obj);
+
+/**
+ * @brief Get the item after the item in list.
+ *
+ * @note If it is the last item, @c null will be returned.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The item after or @c null.
+ *
+ * @ingroup Elm_List_Item
+ */
+EOAPI Elm_Widget_Item *elm_obj_list_item_next_get(const Eo *obj);
+
+/**
+ * @brief Show item in the list view.
+ *
+ * It won't animate list until item is visible. If such behavior is wanted, use
+ * @ref elm_obj_list_item_bring_in instead.
+ * @param[in] obj The object.
+ *
+ * @ingroup Elm_List_Item
+ */
+EOAPI void elm_obj_list_item_show(Eo *obj);
+
+/**
+ * @brief Bring in the given item to list view.
+ *
+ * This causes list to jump to the given item and show it (by scrolling), if it
+ * is not fully visible.
+ *
+ * This may use animation to do so and take a period of time.
+ *
+ * If animation isn't wanted, @ref elm_obj_list_item_show can be used.
+ * @param[in] obj The object.
+ *
+ * @ingroup Elm_List_Item
+ */
+EOAPI void elm_obj_list_item_bring_in(Eo *obj);
+
+#endif
diff --git a/src/lib/elementary/elm_list_item_eo.legacy.c b/src/lib/elementary/elm_list_item_eo.legacy.c
new file mode 100644
index 0000000000..609a9fbd5c
--- /dev/null
+++ b/src/lib/elementary/elm_list_item_eo.legacy.c
@@ -0,0 +1,54 @@
+
+EAPI void
+elm_list_item_separator_set(Elm_List_Item *obj, Eina_Bool setting)
+{
+ elm_obj_list_item_separator_set(obj, setting);
+}
+
+EAPI Eina_Bool
+elm_list_item_separator_get(const Elm_List_Item *obj)
+{
+ return elm_obj_list_item_separator_get(obj);
+}
+
+EAPI void
+elm_list_item_selected_set(Elm_List_Item *obj, Eina_Bool selected)
+{
+ elm_obj_list_item_selected_set(obj, selected);
+}
+
+EAPI Eina_Bool
+elm_list_item_selected_get(const Elm_List_Item *obj)
+{
+ return elm_obj_list_item_selected_get(obj);
+}
+
+EAPI Efl_Canvas_Object *
+elm_list_item_object_get(const Elm_List_Item *obj)
+{
+ return elm_obj_list_item_object_get(obj);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_item_prev(const Elm_List_Item *obj)
+{
+ return elm_obj_list_item_prev_get(obj);
+}
+
+EAPI Elm_Widget_Item *
+elm_list_item_next(const Elm_List_Item *obj)
+{
+ return elm_obj_list_item_next_get(obj);
+}
+
+EAPI void
+elm_list_item_show(Elm_List_Item *obj)
+{
+ elm_obj_list_item_show(obj);
+}
+
+EAPI void
+elm_list_item_bring_in(Elm_List_Item *obj)
+{
+ elm_obj_list_item_bring_in(obj);
+}
diff --git a/src/lib/elementary/elm_list_item_eo.legacy.h b/src/lib/elementary/elm_list_item_eo.legacy.h
new file mode 100644
index 0000000000..af74d6ea03
--- /dev/null
+++ b/src/lib/elementary/elm_list_item_eo.legacy.h
@@ -0,0 +1,141 @@
+#ifndef _ELM_LIST_ITEM_EO_LEGACY_H_
+#define _ELM_LIST_ITEM_EO_LEGACY_H_
+
+#ifndef _ELM_LIST_ITEM_EO_CLASS_TYPE
+#define _ELM_LIST_ITEM_EO_CLASS_TYPE
+
+typedef Eo Elm_List_Item;
+
+#endif
+
+#ifndef _ELM_LIST_ITEM_EO_TYPES
+#define _ELM_LIST_ITEM_EO_TYPES
+
+
+#endif
+
+/**
+ * @brief Set or unset item as a separator.
+ *
+ * Items aren't set as separator by default.
+ *
+ * If set as separator it will display separator theme, so won't display icons
+ * or label.
+ *
+ * @param[in] obj The object.
+ * @param[in] setting @c true means item @c it is a separator. @c false
+ * indicates it's not.
+ *
+ * @ingroup Elm_List_Item_Group
+ */
+EAPI void elm_list_item_separator_set(Elm_List_Item *obj, Eina_Bool setting);
+
+/**
+ * @brief Get a value whether item is a separator or not.
+ *
+ * @param[in] obj The object.
+ *
+ * @return @c true means item @c it is a separator. @c false indicates it's
+ * not.
+ *
+ * @ingroup Elm_List_Item_Group
+ */
+EAPI Eina_Bool elm_list_item_separator_get(const Elm_List_Item *obj);
+
+/**
+ * @brief Set the selected state of an item.
+ *
+ * This sets the selected state of the given item.
+ *
+ * If a new item is selected the previously selected will be unselected, unless
+ * multiple selection is enabled with @ref elm_list_multi_select_set.
+ * Previously selected item can be get with function @ref
+ * elm_list_selected_item_get.
+ *
+ * Selected items will be highlighted.
+ *
+ * @param[in] obj The object.
+ * @param[in] selected The selected state.
+ *
+ * @ingroup Elm_List_Item_Group
+ */
+EAPI void elm_list_item_selected_set(Elm_List_Item *obj, Eina_Bool selected);
+
+/**
+ * @brief Get whether the item is selected or not.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The selected state.
+ *
+ * @ingroup Elm_List_Item_Group
+ */
+EAPI Eina_Bool elm_list_item_selected_get(const Elm_List_Item *obj);
+
+/**
+ * @brief Get the real Evas(Edje) object created to implement the view of a
+ * given list item.
+ *
+ * Base object is the @c Evas_Object that represents that item.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The base Edje object associated with the item.
+ *
+ * @ingroup Elm_List_Item_Group
+ */
+EAPI Efl_Canvas_Object *elm_list_item_object_get(const Elm_List_Item *obj);
+
+/**
+ * @brief Get the item before the item in list.
+ *
+ * @note If it is the first item, @c null will be returned.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The item before or @c null.
+ *
+ * @ingroup Elm_List_Item_Group
+ */
+EAPI Elm_Widget_Item *elm_list_item_prev(const Elm_List_Item *obj);
+
+/**
+ * @brief Get the item after the item in list.
+ *
+ * @note If it is the last item, @c null will be returned.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The item after or @c null.
+ *
+ * @ingroup Elm_List_Item_Group
+ */
+EAPI Elm_Widget_Item *elm_list_item_next(const Elm_List_Item *obj);
+
+/**
+ * @brief Show item in the list view.
+ *
+ * It won't animate list until item is visible. If such behavior is wanted, use
+ * @ref elm_list_item_bring_in instead.
+ * @param[in] obj The object.
+ *
+ * @ingroup Elm_List_Item_Group
+ */
+EAPI void elm_list_item_show(Elm_List_Item *obj);
+
+/**
+ * @brief Bring in the given item to list view.
+ *
+ * This causes list to jump to the given item and show it (by scrolling), if it
+ * is not fully visible.
+ *
+ * This may use animation to do so and take a period of time.
+ *
+ * If animation isn't wanted, @ref elm_list_item_show can be used.
+ * @param[in] obj The object.
+ *
+ * @ingroup Elm_List_Item_Group
+ */
+EAPI void elm_list_item_bring_in(Elm_List_Item *obj);
+
+#endif
diff --git a/src/lib/elementary/elm_list_legacy.h b/src/lib/elementary/elm_list_legacy.h
index a99532dfd2..0cdb591984 100644
--- a/src/lib/elementary/elm_list_legacy.h
+++ b/src/lib/elementary/elm_list_legacy.h
@@ -1,15 +1,15 @@
/**
* Add a new list widget to the given parent Elementary
* (container) object.
*
* @param parent The parent object.
* @return a new list widget handle or @c NULL, on errors.
*
* This function inserts a new list widget on the canvas.
*
* @ingroup Elm_List
*/
EAPI Evas_Object *elm_list_add(Evas_Object *parent);
-#include "elm_list_item.eo.legacy.h"
-#include "elm_list.eo.legacy.h"
+#include "elm_list_item_eo.legacy.h"
+#include "elm_list_eo.legacy.h"
diff --git a/src/lib/elementary/elm_widget_list.h b/src/lib/elementary/elm_widget_list.h
index 707f170e92..a92807de0f 100644
--- a/src/lib/elementary/elm_widget_list.h
+++ b/src/lib/elementary/elm_widget_list.h
@@ -1,146 +1,146 @@
#ifndef ELM_WIDGET_LIST_H
#define ELM_WIDGET_LIST_H
#include "elm_interface_scrollable.h"
#include "elm_widget_layout.h"
-#include "elm_list.eo.h"
-#include "elm_list_item.eo.h"
+#include "elm_list_eo.h"
+#include "elm_list_item_eo.h"
/* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR
* CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT
* FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK
* IT AT RUNTIME.
*/
/**
* @addtogroup Widget
* @{
*
* @section elm-list-class The Elementary List Class
*
* Elementary, besides having the @ref List widget, exposes its
* foundation -- the Elementary List Class -- in order to create
* other widgets which are a list with some more logic on top.
*/
#define ELM_LIST_SWIPE_MOVES 12
typedef struct _Elm_List_Item_Data Elm_List_Item_Data;
/**
* Base widget smart data extended with list instance data.
*/
typedef struct _Elm_List_Data Elm_List_Data;
struct _Elm_List_Data
{
Evas_Object *box, *hit_rect;
Eina_List *items, *selected;
Elm_Object_Item *last_selected_item;
Elm_Object_Item *focused_item; /**< a focused item by keypad arrow or mouse. This is set to NULL if widget looses focus. */
Elm_Object_Item *last_focused_item; /**< This records the last focused item when widget looses focus. This is required to set the focus on last focused item when widgets gets focus. */
Evas_Coord minw[2], minh[2], dx, dy;
Elm_Object_Select_Mode select_mode;
Elm_Object_Multi_Select_Mode multi_select_mode; /**< select mode for multiple selection */
int movements;
int walking;
Elm_List_Mode h_mode;
Elm_List_Mode mode;
struct
{
Evas_Coord x, y;
} history[ELM_LIST_SWIPE_MOVES];
Eina_Bool focus_on_selection_enabled : 1;
Eina_Bool was_selected : 1;
Eina_Bool fix_pending : 1;
Eina_Bool longpressed : 1;
Eina_Bool scr_minw : 1;
Eina_Bool scr_minh : 1;
Eina_Bool on_hold : 1;
Eina_Bool multi : 1;
Eina_Bool swipe : 1;
Eina_Bool delete_me : 1;
Eina_Bool mouse_down : 1; /**< a flag that mouse is down on the list at the moment. this flag is set to true on mouse and reset to false on mouse up */
Eina_Bool item_loop_enable : 1; /**< value whether item loop feature is enabled or not. */
Eina_Bool item_looping_on : 1;
Eina_Bool fixing_now : 1;
};
struct _Elm_List_Item_Data
{
Elm_Widget_Item_Data *base;
Ecore_Timer *swipe_timer;
Ecore_Timer *long_timer;
Evas_Object *icon, *end;
Evas_Smart_Cb func;
const char *label;
Eina_List *node;
Eina_Bool is_separator : 1;
Eina_Bool highlighted : 1;
Eina_Bool dummy_icon : 1;
Eina_Bool dummy_end : 1;
Eina_Bool selected : 1;
Eina_Bool deleted : 1;
Eina_Bool is_even : 1;
Eina_Bool fixed : 1;
Eina_Bool even : 1;
};
/**
* @}
*/
#define ELM_LIST_DATA_GET(o, sd) \
Elm_List_Data * sd = efl_data_scope_get(o, ELM_LIST_CLASS)
#define ELM_LIST_DATA_GET_FROM_ITEM(it, sd) \
ELM_LIST_DATA_GET(WIDGET(it), sd)
#define ELM_LIST_DATA_GET_OR_RETURN(o, ptr) \
ELM_LIST_DATA_GET(o, ptr); \
if (EINA_UNLIKELY(!ptr)) \
{ \
ERR("No widget data for object %p (%s)", \
o, evas_object_type_get(o)); \
return; \
}
#define ELM_LIST_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
ELM_LIST_DATA_GET(o, ptr); \
if (EINA_UNLIKELY(!ptr)) \
{ \
ERR("No widget data for object %p (%s)", \
o, evas_object_type_get(o)); \
return val; \
}
#define ELM_LIST_CHECK(obj) \
if (EINA_UNLIKELY(!efl_isa((obj), ELM_LIST_CLASS))) \
return
#define ELM_LIST_ITEM_CHECK(it) \
ELM_WIDGET_ITEM_CHECK_OR_RETURN(it->base, ); \
ELM_LIST_CHECK(it->base->widget); \
if (it->deleted) \
{ \
ERR("ERROR: " #it " has been DELETED.\n"); \
return; \
}
#define ELM_LIST_ITEM_CHECK_OR_RETURN(it, ...) \
ELM_WIDGET_ITEM_CHECK_OR_RETURN(it->base, __VA_ARGS__); \
ELM_LIST_CHECK(it->base->widget) __VA_ARGS__; \
if (it->deleted) \
{ \
ERR("ERROR: " #it " has been DELETED.\n"); \
return __VA_ARGS__; \
}
#define ELM_LIST_ITEM_DATA_GET(o, sd) \
Elm_List_Item_Data* sd = efl_data_scope_get(o, ELM_LIST_ITEM_CLASS)
#endif
diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build
index 52da8ea4b5..5880680949 100644
--- a/src/lib/elementary/meson.build
+++ b/src/lib/elementary/meson.build
@@ -1,1082 +1,1084 @@
pub_legacy_eo_files = [
'efl_ui_clock_legacy.eo',
- 'elm_list.eo',
'elm_map.eo',
'elm_map_pan.eo',
'elm_menu.eo',
'elm_notify.eo',
'elm_panel.eo',
'elm_player.eo',
'elm_plug.eo',
'elm_popup.eo',
'elm_route.eo',
'elm_scroller.eo',
'elm_sys_notify_interface.eo',
'elm_sys_notify.eo',
'elm_sys_notify_dbus.eo',
'elm_systray.eo',
'elm_menu_item.eo',
'elm_widget_item_static_focus.eo',
- 'elm_list_item.eo',
'elm_popup_item.eo',
'elm_ctxpopup_part.eo',
'elm_dayselector_part.eo',
'elm_entry_part.eo',
'elm_fileselector_entry_part.eo',
'elm_flip_part.eo',
'elm_hover_part.eo',
'elm_mapbuf_part.eo',
'elm_naviframe_part.eo',
'elm_notify_part.eo',
'elm_panel_part.eo',
'elm_player_part.eo',
'elm_popup_part.eo',
'elm_scroller_part.eo',
'elm_label_part.eo',
'elm_actionslider_part.eo',
'elm_bubble_part.eo',
'elm_fileselector_part.eo',
'elm_mapbuf.eo',
'elm_naviframe.eo',
'elm_naviframe_item.eo',
'elm_photo.eo',
'elm_prefs.eo',
'elm_segment_control.eo',
'elm_segment_control_item.eo',
'elm_separator.eo',
'elm_slideshow.eo',
'elm_slideshow_item.eo',
'elm_table.eo',
'elm_thumb.eo',
]
pub_eo_file_target = []
foreach eo_file : pub_legacy_eo_files
pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
input : eo_file,
output : [eo_file + '.legacy.h',],
depfile : eo_file + '.d',
install : true,
install_dir : dir_package_include,
command : eolian_gen + [ '-I', meson.current_source_dir(), eolian_include_directories,
'-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'),
'-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'),
'-o', 'l:' + join_paths(meson.current_build_dir(), eo_file + '.legacy.h'),
'-o', 'd:' + join_paths(meson.current_build_dir(), eo_file + '.d'),
'-gchld', '@INPUT@'])
endforeach
pub_eo_files = [
'efl_ui_widget.eo',
'efl_ui_bg.eo',
'efl_ui_button.eo',
'efl_ui_calendar.eo',
'efl_ui_calendar_item.eo',
'efl_ui_check.eo',
'efl_ui_flip.eo',
'efl_ui_frame.eo',
'efl_ui_stack.eo',
'efl_ui_image.eo',
'efl_ui_image_zoomable.eo',
'efl_ui_layout.eo',
'efl_ui_layout_base.eo',
'efl_ui_nstate.eo',
'efl_ui_navigation_bar.eo',
'efl_ui_navigation_bar_part.eo',
'efl_ui_navigation_bar_part_back_button.eo',
'efl_ui_navigation_layout.eo',
'efl_ui_panes.eo',
'efl_ui_progressbar.eo',
'efl_ui_radio.eo',
'efl_ui_slider.eo',
'efl_ui_slider_interval.eo',
'efl_ui_spin.eo',
'efl_ui_spin_button.eo',
'efl_ui_panel.eo',
'efl_ui_datepicker.eo',
'efl_ui_timepicker.eo',
'efl_ui_tags.eo',
'efl_ui_video.eo',
'efl_ui_win.eo',
'efl_ui_win_inlined.eo',
'efl_ui_win_socket.eo',
'efl_ui_box.eo',
'efl_ui_box_flow.eo',
'efl_ui_box_stack.eo',
'efl_ui_table.eo',
'efl_ui_table_static.eo',
'efl_text_interactive.eo',
'efl_ui_text.eo',
'efl_ui_popup.eo',
'efl_ui_popup_part_backwall.eo',
'efl_ui_alert_popup.eo',
'efl_ui_alert_popup_part.eo',
'efl_ui_scroll_alert_popup.eo',
'efl_ui_scroll_alert_popup_part.eo',
'efl_ui_text_alert_popup.eo',
'efl_ui_text_alert_popup_part.eo',
'efl_ui_anchor_popup.eo',
'efl_ui_text_editable.eo',
'efl_ui_text_async.eo',
'efl_ui_text_factory_images.eo',
'efl_ui_text_factory_emoticons.eo',
'efl_ui_text_factory_fallback.eo',
'efl_ui_textpath.eo',
'efl_ui_l10n.eo',
'efl_ui_clock.eo',
'efl_ui_image_factory.eo',
'efl_ui_focus_manager.eo',
'efl_ui_focus_manager_calc.eo',
'efl_ui_focus_manager_sub.eo',
'efl_ui_focus_manager_root_focus.eo',
'efl_ui_focus_object.eo',
'efl_ui_focus_layer.eo',
'efl_ui_focus_composition.eo',
'efl_ui_focus_util.eo',
'efl_ui_flip_part.eo',
'efl_ui_layout_factory.eo',
'efl_ui_layout_part.eo',
'efl_ui_layout_part_box.eo',
'efl_ui_layout_part_content.eo',
'efl_ui_layout_part_text.eo',
'efl_ui_layout_part_table.eo',
'efl_ui_layout_part_bg.eo',
'efl_ui_layout_part_legacy.eo',
'efl_ui_list_view.eo',
'efl_ui_list_view_model.eo',
'efl_ui_list_view_pan.eo',
'efl_ui_item.eo',
'efl_ui_list_item.eo',
'efl_ui_list_default_item_part_icon.eo',
'efl_ui_list_default_item_part_end.eo',
'efl_ui_list_default_item.eo',
'efl_ui_list_empty_item.eo',
'efl_ui_list.eo',
'efl_ui_grid_item.eo',
'efl_ui_grid_default_item_part_icon.eo',
'efl_ui_grid_default_item_part_end.eo',
'efl_ui_grid_default_item.eo',
'efl_ui_grid.eo',
'efl_ui_panes_part.eo',
'efl_ui_progressbar_part.eo',
'elm_slider.eo',
'elm_slider_part_indicator.eo',
'efl_ui_textpath_part.eo',
'efl_ui_widget_part.eo',
'efl_ui_widget_part_bg.eo',
'efl_ui_widget_part_shadow.eo',
'efl_ui_win_part.eo',
'efl_ui_scroller.eo',
'efl_ui_scroll_manager.eo',
'efl_ui_pan.eo',
'efl_access_object.eo',
'efl_access_action.eo',
'efl_access_component.eo',
'efl_access_editable_text.eo',
'efl_access_selection.eo',
'efl_access_text.eo',
'efl_access_value.eo',
'efl_access_widget_action.eo',
'efl_access_window.eo',
'efl_ui_theme.eo',
'efl_config_global.eo',
'elm_code_widget.eo',
'efl_ui_selection.eo',
'efl_ui_dnd.eo',
'efl_ui_dnd_container.eo',
'efl_ui_focus_manager_window_root.eo',
'efl_ui_pager.eo',
'efl_page_transition.eo',
'efl_page_transition_scroll.eo',
'efl_page_indicator.eo',
'efl_page_indicator_icon.eo',
'efl_ui_tab_pager.eo',
'efl_ui_tab_bar.eo',
'efl_ui_tab_page.eo',
'efl_ui_tab_page_part_tab.eo',
'efl_ui_widget_focus_manager.eo',
'efl_ui_legacy.eo',
'efl_ui_button_legacy_part.eo',
'efl_ui_radio_legacy_part.eo',
'efl_ui_check_legacy_part.eo',
'efl_ui_progressbar_legacy_part.eo',
'elm_widget_item_container.eo',
'elm_spinner.eo',
'elm_multibuttonentry.eo',
'elm_multibuttonentry_item.eo',
'elm_multibuttonentry_part.eo',
'elm_interface_scrollable.eo',
'elm_atspi_bridge.eo',
'elm_atspi_app_object.eo',
'efl_ui_image_zoomable_pan.eo',
'elm_pan.eo',
'elm_toolbar.eo',
'elm_toolbar_item.eo',
'elm_view_list.eo',
'elm_view_form.eo',
'elm_web.eo',
'elm_widget_item.eo',
'efl_ui_text_part.eo',
'efl_ui_caching_factory.eo',
'efl_ui_widget_factory.eo',
'efl_ui_relative_layout.eo',
]
foreach eo_file : pub_eo_files
pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
input : eo_file,
output : [eo_file + '.h'],
depfile : eo_file + '.d',
install : true,
install_dir : dir_package_include,
command : eolian_gen + [ '-I', meson.current_source_dir(), eolian_include_directories,
'-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'),
'-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'),
'-o', 'd:' + join_paths(meson.current_build_dir(), eo_file + '.d'),
'-gchd', '@INPUT@'])
pub_eo_file_target += custom_target('eolian_gen_legacy_' + eo_file,
input : eo_file,
output : [eo_file + '.legacy.h'],
depfile : eo_file + '.legacy.d',
install : true,
install_dir : dir_package_include,
command : eolian_gen + [ '-I', meson.current_source_dir(), eolian_include_directories,
'-o', 'l:' + join_paths(meson.current_build_dir(), eo_file + '.legacy.h'),
'-o', 'd:' + join_paths(meson.current_build_dir(), eo_file + '.legacy.d'),
'-gld', '@INPUT@'])
endforeach
pub_eo_types_files = [
'elm_general.eot',
'efl_ui.eot',
'efl_ui_list_view_types.eot',
'efl_ui_selection_types.eot',
'efl_ui_dnd_types.eot'
]
foreach eo_file : pub_eo_types_files
pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
input : eo_file,
output : [eo_file + '.h'],
depfile : eo_file + '.d',
install : true,
install_dir : dir_package_include,
command : eolian_gen + [ '-I', meson.current_source_dir(), eolian_include_directories,
'-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'),
'-o', 'd:' + join_paths(meson.current_build_dir(), eo_file + '.d'),
'-ghd', '@INPUT@'])
endforeach
priv_eo_files = [
'efl_ui_internal_text_interactive.eo',
'efl_ui_internal_text_scroller.eo',
'efl_ui_focus_composition_adapter.eo',
'efl_ui_focus_parent_provider.eo',
'efl_ui_focus_parent_provider_standard.eo',
'efl_ui_focus_parent_provider_gen.eo',
'efl_ui_state_model.eo',
'efl_ui_selection_manager.eo',
'efl_datetime_manager.eo',
'efl_ui_list_view_precise_layouter.eo',
'efl_ui_list_view_relayout.eo',
'efl_ui_size_model.eo',
'efl_ui_homogeneous_model.eo',
'efl_ui_exact_model.eo',
'efl_ui_average_model.eo',
]
priv_eo_file_target = []
foreach eo_file : priv_eo_files
priv_eo_file_target += custom_target('eolian_gen_' + eo_file,
input : eo_file,
output : [eo_file + '.h'],
depfile : eo_file + '.d',
command : eolian_gen + [ '-I', meson.current_source_dir(), eolian_include_directories,
'-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'),
'-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'),
'-o', 'd:' + join_paths(meson.current_build_dir(), eo_file + '.d'),
'-gchd', '@INPUT@'])
endforeach
eolian_include_directories += ['-I', meson.current_source_dir()]
elementary_headers_unstable = [
'elm_gen_common.h',
'elm_atspi_bridge.h',
'efl_access_object.h',
'efl_access_text.h',
'efl_access_widget_action.h',
'efl_access_window.h',
'elm_interface_fileselector.h',
'elm_interface_scrollable.h',
'elm_interfaces.h',
'elm_widget.h',
'elm_widget_actionslider.h',
'elm_widget_box.h',
'elm_widget_bubble.h',
'efl_ui_button_private.h',
'efl_ui_bg_private.h',
'elm_widget_calendar.h',
'efl_ui_calendar_private.h',
'efl_ui_check_private.h',
'elm_widget_clock.h',
'elm_widget_colorselector.h',
'elm_widget_conform.h',
'elm_widget_container.h',
'elm_widget_combobox.h',
'elm_widget_ctxpopup.h',
'elm_widget_dayselector.h',
'elm_widget_diskselector.h',
'elm_widget_entry.h',
'elm_widget_fileselector.h',
'elm_widget_fileselector_button.h',
'elm_widget_fileselector_entry.h',
'efl_ui_widget_flip.h',
'elm_widget_flipselector.h',
'efl_ui_widget_frame.h',
'efl_ui_stack_private.h',
'elm_widget_gengrid.h',
'elm_widget_genlist.h',
'elm_widget_glview.h',
'elm_widget_grid.h',
'elm_widget_hover.h',
'elm_widget_hoversel.h',
'elm_widget_icon.h',
'efl_ui_widget_image.h',
'efl_ui_popup_private.h',
'efl_ui_alert_popup_private.h',
'efl_ui_scroll_alert_popup_private.h',
'efl_ui_text_alert_popup_private.h',
'efl_ui_anchor_popup_private.h',
'elm_widget_index.h',
'elm_widget_inwin.h',
'elm_widget_label.h',
'elm_widget_layout.h',
'elm_widget_list.h',
'elm_widget_map.h',
'elm_widget_mapbuf.h',
'elm_widget_menu.h',
'elm_widget_multibuttonentry.h',
'elm_widget_naviframe.h',
'efl_ui_navigation_bar_private.h',
'efl_ui_navigation_layout_private.h',
'elm_widget_notify.h',
'elm_widget_panel.h',
'efl_ui_panes_private.h',
'elm_widget_photo.h',
'efl_ui_image_zoomable_private.h',
'elm_widget_player.h',
'elm_widget_plug.h',
'elm_widget_popup.h',
'elm_widget_prefs.h',
'efl_ui_progressbar_private.h',
'efl_ui_radio_private.h',
'elm_widget_route.h',
'elm_widget_scroller.h',
'elm_widget_segment_control.h',
'elm_widget_separator.h',
'elm_widget_slider.h',
'efl_ui_slider_private.h',
'efl_ui_slider_interval_private.h',
'elm_widget_slideshow.h',
'elm_widget_spinner.h',
'efl_ui_spin_private.h',
'efl_ui_spin_button_private.h',
'efl_ui_panel_private.h',
'efl_ui_datepicker_private.h',
'efl_ui_timepicker_private.h',
'efl_ui_tags_private.h',
'elm_widget_table.h',
'elm_widget_thumb.h',
'elm_widget_toolbar.h',
'efl_ui_video_private.h',
'efl_ui_item_private.h',
'efl_ui_list_item_private.h',
'efl_ui_list_private.h',
'efl_ui_grid_item_private.h',
'efl_ui_grid_private.h',
'efl_ui_list_view_private.h',
'efl_ui_list_view_seg_array.h',
'elm_widget_web.h',
'efl_ui_clock.h',
'elm_code.h',
'elm_code_widget_legacy.h',
'elm_code_widget_selection.h',
'elm_code_diff_widget.h',
'elm_code_common.h',
'elm_code_line.h',
'elm_code_text.h',
'elm_code_indent.h',
'elm_code_file.h',
'elm_code_parse.h',
'elm_code_syntax.h',
'efl_ui_widget_scroller.h',
'efl_ui_widget_scroll_manager.h',
'efl_ui_widget_pan.h',
'efl_ui_nstate_private.h',
'Efl_Ui.h',
'efl_ui_widget_pager.h',
'efl_page_transition.h',
'efl_page_transition_scroll.h',
'efl_page_indicator.h',
'efl_page_indicator_icon.h',
'efl_ui_tab_pager_private.h',
'efl_ui_tab_bar_private.h',
'efl_ui_tab_page_private.h',
'efl_ui_relative_layout_private.h'
]
elementary_pub_headers = [
'elc_ctxpopup.h',
'elc_ctxpopup_legacy.h',
'elc_combobox.h',
'elc_combobox_legacy.h',
'elc_fileselector.h',
'elc_fileselector_legacy.h',
'elc_fileselector_common.h',
'elc_fileselector_button.h',
'elc_fileselector_button_legacy.h',
'elc_fileselector_entry.h',
'elc_fileselector_entry_legacy.h',
'elc_hoversel.h',
'elc_hoversel_legacy.h',
'elc_multibuttonentry.h',
'elc_multibuttonentry_eo.h',
'elc_multibuttonentry_legacy.h',
'elc_multibuttonentry_common.h',
'elc_naviframe.h',
'elc_naviframe_legacy.h',
'elc_naviframe_common.h',
'elc_popup.h',
'elc_popup_legacy.h',
'elm_access.h',
'elm_actionslider.h',
'elm_actionslider_legacy.h',
'elm_app.h',
'elm_atspi_app_object.h',
'elm_authors.h',
'elm_bg.h',
'elm_bg_legacy.h',
'elm_box.h',
'elm_box_legacy.h',
'elm_box_common.h',
'elm_bubble.h',
'elm_bubble_legacy.h',
'elm_button.h',
'efl_ui_widget_common.h',
'efl_ui_button_eo.h',
'elm_button_legacy.h',
'elm_cache.h',
'elm_calendar.h',
'elm_calendar_legacy.h',
'elm_calendar_common.h',
'efl_ui_calendar.h',
'elm_check.h',
'efl_ui_check_eo.h',
'elm_check_legacy.h',
'elm_clock.h',
'elm_clock_legacy.h',
'elm_cnp.h',
'elm_colorselector.h',
'elm_colorselector_legacy.h',
'elm_colorselector_common.h',
'elm_color_class.h',
'elm_config.h',
'elm_conform.h',
'elm_conform_legacy.h',
'elm_cursor.h',
'elm_datetime.h',
'elm_dayselector.h',
'elm_dayselector_legacy.h',
'elm_debug.h',
'elm_deprecated.h',
'elm_diskselector.h',
'elm_diskselector_common.h',
'elm_diskselector_legacy.h',
'elm_entry.h',
'elm_entry_common.h',
'elm_entry_eo.h',
'elm_entry_legacy.h',
'elm_finger.h',
'elm_flip.h',
'efl_ui_flip_eo.h',
'efl_ui_flip_legacy.h',
'elm_flipselector.h',
'elm_flipselector_legacy.h',
'elm_focus.h',
'elm_focus_item.h',
'elm_font.h',
'elm_frame.h',
'efl_ui_frame_eo.h',
'efl_ui_frame_legacy.h',
'elm_gen.h',
'elm_general.h',
'elm_gengrid.h',
'elm_gengrid_common.h',
'elm_gengrid_legacy.h',
'elm_genlist.h',
'elm_genlist_common.h',
'elm_genlist_legacy.h',
'elm_gesture_layer.h',
'elm_gesture_layer_common.h',
'elm_gesture_layer_legacy.h',
'elm_getting_started.h',
'elm_glview.h',
'elm_glview_common.h',
'elm_glview_legacy.h',
'elm_grid.h',
'elm_grid_legacy.h',
'elm_hover.h',
'elm_hover_legacy.h',
'elm_icon.h',
'elm_icon_legacy.h',
'elm_image.h',
'elm_image_eo.h',
'elm_image_legacy.h',
'elm_index.h',
'elm_index_legacy.h',
'elm_inwin.h',
'elm_inwin_legacy.h',
'elm_label.h',
'elm_label_legacy.h',
'elm_layout.h',
'elm_layout_common.h',
'elm_layout_legacy.h',
'elm_list.h',
'elm_list_legacy.h',
'elm_macros.h',
'elm_map.h',
'elm_map_common.h',
'elm_map_legacy.h',
'elm_mapbuf.h',
'elm_mapbuf_legacy.h',
'elm_menu.h',
'elm_menu_legacy.h',
'elm_mirroring.h',
'elm_need.h',
'elm_notify.h',
'elm_notify_common.h',
'elm_notify_legacy.h',
'efl_ui_nstate.h',
'elm_object.h',
'elm_object_item.h',
'elm_panel.h',
'elm_panel_common.h',
'elm_panel_legacy.h',
'elm_panes.h',
'efl_ui_panes_eo.h',
'elm_panes_legacy.h',
'elm_photo.h',
'elm_photo_legacy.h',
'elm_photocam.h',
'efl_ui_image_zoomable_eo.h',
'elm_photocam_legacy.h',
'elm_plug.h',
'elm_plug_legacy.h',
'elm_prefs.h',
'elm_prefs_common.h',
'elm_prefs_legacy.h',
'elm_prefs_data.h',
'elm_progressbar.h',
'elm_progressbar_common.h',
'efl_ui_progressbar_eo.h',
'elm_progressbar_legacy.h',
'elm_radio.h',
'efl_ui_radio_eo.h',
'elm_radio_legacy.h',
'elm_route.h',
'elm_route_legacy.h',
'elm_scale.h',
'elm_scroll.h',
'elm_scroller.h',
'elm_scroller_legacy.h',
'elm_segment_control.h',
'elm_segment_control_legacy.h',
'elm_separator.h',
'elm_separator_legacy.h',
'elm_slider.h',
'elm_slider_common.h',
'elm_slider_legacy.h',
'elm_slideshow.h',
'elm_slideshow_common.h',
'elm_slideshow_legacy.h',
'elm_spinner.h',
'elm_spinner_legacy.h',
'elm_store.h',
'elm_systray.h',
'elm_systray_common.h',
'elm_systray_watcher.h',
'elm_sys_notify.h',
'elm_table.h',
'elm_table_legacy.h',
'elm_theme.h',
'elm_thumb.h',
'elm_thumb_common.h',
'elm_thumb_legacy.h',
'elm_textpath.h',
'elm_textpath_legacy.h',
'elm_toolbar.h',
'elm_toolbar_common.h',
'elm_toolbar_eo.h',
'elm_toolbar_legacy.h',
'elm_tooltip.h',
'elm_transit.h',
'efl_ui_video.h',
'efl_ui_video_eo.h',
'efl_ui_video_legacy.h',
'elm_view_list.h',
'elm_view_form.h',
'elm_web.h',
'elm_web_common.h',
'elm_web_eo.h',
'elm_web_legacy.h',
'elm_win.h',
'elm_win_common.h',
'elm_win_eo.h',
'elm_win_legacy.h',
'elm_helper.h',
'elm_part_helper.h',
'efl_ui_bg_eo.legacy.h',
'efl_ui_bg_legacy_eo.h',
'efl_ui_bg_legacy_eo.legacy.h',
'efl_ui_button_eo.legacy.h',
'efl_ui_button_legacy_eo.h',
'efl_ui_button_legacy_eo.legacy.h',
'efl_ui_check_eo.legacy.h',
'efl_ui_check_legacy_eo.h',
'efl_ui_check_legacy_eo.legacy.h',
'efl_ui_flip_eo.legacy.h',
'efl_ui_flip_legacy_eo.h',
'efl_ui_flip_legacy_eo.legacy.h',
'efl_ui_frame_eo.legacy.h',
'efl_ui_frame_legacy_eo.h',
'efl_ui_frame_legacy_eo.legacy.h',
'efl_ui_image_legacy_eo.h',
'efl_ui_image_legacy_eo.legacy.h',
'efl_ui_image_zoomable_eo.legacy.h',
'efl_ui_image_zoomable_legacy_eo.h',
'efl_ui_image_zoomable_legacy_eo.legacy.h',
'efl_ui_layout_legacy_eo.h',
'efl_ui_layout_legacy_eo.legacy.h',
'efl_ui_panes_eo.legacy.h',
'efl_ui_panes_legacy_eo.h',
'efl_ui_panes_legacy_eo.legacy.h',
'efl_ui_progressbar_legacy_eo.h',
'efl_ui_progressbar_legacy_eo.legacy.h',
'efl_ui_radio_eo.legacy.h',
'efl_ui_radio_legacy_eo.h',
'efl_ui_radio_legacy_eo.legacy.h',
'efl_ui_textpath_eo.legacy.h',
'efl_ui_textpath_legacy_eo.h',
'efl_ui_textpath_legacy_eo.legacy.h',
'efl_ui_video_eo.legacy.h',
'efl_ui_video_legacy_eo.h',
'efl_ui_video_legacy_eo.legacy.h',
'efl_ui_widget_eo.legacy.h',
'efl_ui_win_inlined_legacy_eo.h',
'efl_ui_win_inlined_legacy_eo.legacy.h',
'efl_ui_win_legacy_eo.h',
'efl_ui_win_legacy_eo.legacy.h',
'efl_ui_win_socket_legacy_eo.h',
'efl_ui_win_socket_legacy_eo.legacy.h',
'elm_access_eo.h',
'elm_access_eo.legacy.h',
'elm_actionslider_eo.h',
'elm_actionslider_eo.legacy.h',
'elm_box_eo.h',
'elm_box_eo.legacy.h',
'elm_bubble_eo.h',
'elm_bubble_eo.legacy.h',
'elm_calendar_eo.h',
'elm_calendar_eo.legacy.h',
'elm_calendar_item_eo.h',
'elm_calendar_item_eo.legacy.h',
'elm_clock_eo.h',
'elm_clock_eo.legacy.h',
'elm_code_widget_eo.legacy.h',
'elm_code_widget_legacy_eo.h',
'elm_code_widget_legacy_eo.legacy.h',
'elm_color_item_eo.h',
'elm_color_item_eo.legacy.h',
'elm_colorselector_eo.h',
'elm_colorselector_eo.legacy.h',
'elm_conformant_eo.h',
'elm_conformant_eo.legacy.h',
'elm_ctxpopup_eo.h',
'elm_ctxpopup_eo.legacy.h',
'elm_ctxpopup_item_eo.h',
'elm_ctxpopup_item_eo.legacy.h',
'elm_dayselector_eo.h',
'elm_dayselector_eo.legacy.h',
'elm_dayselector_item_eo.h',
'elm_dayselector_item_eo.legacy.h',
'elm_diskselector_eo.h',
'elm_diskselector_eo.legacy.h',
'elm_diskselector_item_eo.h',
'elm_diskselector_item_eo.legacy.h',
'elm_entry_eo.h',
'elm_entry_eo.legacy.h',
'elm_fileselector_button_eo.h',
'elm_fileselector_button_eo.legacy.h',
'elm_fileselector_entry_eo.h',
'elm_fileselector_entry_eo.legacy.h',
'elm_fileselector_eo.h',
'elm_fileselector_eo.legacy.h',
'elm_flipselector_eo.h',
'elm_flipselector_eo.legacy.h',
'elm_flipselector_item_eo.h',
'elm_flipselector_item_eo.legacy.h',
'elm_gengrid_eo.h',
'elm_gengrid_eo.legacy.h',
'elm_gengrid_item_eo.h',
'elm_gengrid_item_eo.legacy.h',
'elm_gengrid_pan_eo.h',
'elm_gengrid_pan_eo.legacy.h',
'elm_genlist_eo.h',
'elm_genlist_eo.legacy.h',
'elm_genlist_item_eo.h',
'elm_genlist_item_eo.legacy.h',
'elm_genlist_pan_eo.h',
'elm_genlist_pan_eo.legacy.h',
'elm_gesture_layer_eo.h',
'elm_gesture_layer_eo.legacy.h',
'elm_glview_eo.h',
'elm_glview_eo.legacy.h',
'elm_grid_eo.h',
'elm_grid_eo.legacy.h',
'elm_hover_eo.h',
'elm_hover_eo.legacy.h',
'elm_hoversel_eo.h',
'elm_hoversel_eo.legacy.h',
'elm_hoversel_item_eo.h',
'elm_hoversel_item_eo.legacy.h',
'elm_icon_eo.h',
'elm_icon_eo.legacy.h',
'elm_index_eo.h',
'elm_index_eo.legacy.h',
'elm_index_item_eo.h',
'elm_index_item_eo.legacy.h',
'elm_interface_fileselector_eo.h',
'elm_interface_fileselector_eo.legacy.h',
'elm_inwin_eo.h',
'elm_inwin_eo.legacy.h',
'elm_label_eo.h',
'elm_label_eo.legacy.h',
+ 'elm_list_eo.h',
+ 'elm_list_eo.legacy.h',
+ 'elm_list_item_eo.h',
+ 'elm_list_item_eo.legacy.h',
]
elementary_header_src = [
'Elementary.h',
'Elementary_Cursor.h'
] + elementary_pub_headers + elementary_headers_unstable
elementary_src = [
'elm_priv.h',
'elementary_config.h',
'els_box.h',
'elc_ctxpopup.c',
'elc_fileselector.c',
'elc_fileselector_button.c',
'elc_fileselector_entry.c',
'elc_hoversel.c',
'elc_multibuttonentry.c',
'elc_naviframe.c',
'efl_ui_navigation_bar.c',
'efl_ui_navigation_layout.c',
'elc_player.c',
'elc_popup.c',
'elc_scrolled_entry.c',
'elm_access.c',
'elm_actionslider.c',
'elm_atspi_app_object.c',
'elm_atspi_bridge.c',
'efl_ui_legacy.c',
'efl_ui_bg.c',
'elm_box.c',
'elm_bubble.c',
'efl_ui_button.c',
'elm_calendar.c',
'efl_ui_calendar.c',
'efl_ui_check.c',
'elm_clock.c',
'elm_code_line.c',
'elm_code_text.c',
'elm_code_indent.c',
'elm_code_file.c',
'elm_code_parse.c',
'elm_code_syntax.c',
'elm_code_widget_selection.c',
'elm_code_widget.c',
'elm_code_diff_widget.c',
'elm_code.c',
'elm_code_private.h',
'elm_code_widget_private.h',
'elm_colorselector.c',
'elm_color_class.c',
'elc_combobox.c',
'elm_config.c',
'elm_conform.c',
'elm_datetime.c',
'elm_dayselector.c',
'elm_dbus_menu.c',
'elm_diskselector.c',
'elm_entry.c',
'efl_ui_flip.c',
'efl_ui_internal_text_interactive.c',
'efl_ui_internal_text_interactive.h',
'efl_ui_internal_text_scroller.c',
'efl_ui_internal_text_scroller.h',
'elm_flipselector.c',
'elm_font.c',
'efl_ui_frame.c',
'efl_ui_stack.c',
'elm_gengrid.c',
'elm_genlist.c',
'elm_gesture_layer.c',
'elm_gesture_layer_extra_gestures.c',
'elm_glview.c',
'elm_grid.c',
'elm_hover.c',
'elm_icon.c',
'efl_ui_image.c',
'elm_index.c',
'efl_access_object.c',
'efl_access_action.c',
'efl_access_component.c',
'efl_access_editable_text.c',
'efl_access_selection.c',
'efl_access_text.c',
'efl_access_value.c',
'efl_access_widget_action.c',
'efl_access_window.c',
'elm_interface_fileselector.c',
'elm_interface_scrollable.c',
'elm_inwin.c',
'elm_label.c',
'efl_ui_layout.c',
'efl_ui_layout_pack.c',
'elm_list.c',
'elm_main.c',
'elm_map.c',
'elm_mapbuf.c',
'elm_menu.c',
'elm_module.c',
'elm_notify.c',
'efl_ui_nstate.c',
'elm_panel.c',
'efl_ui_panes.c',
'elm_photo.c',
'efl_ui_image_zoomable.c',
'elm_plug.c',
'elm_prefs.c',
'elm_prefs_data.c',
'efl_ui_progressbar.c',
'efl_ui_radio.c',
'elm_route.c',
'elm_scroller.c',
'elm_segment_control.c',
'elm_separator.c',
'elm_slider.c',
'efl_ui_slider.c',
'efl_ui_slider_interval.c',
'efl_ui_spin.c',
'efl_ui_spin_button.c',
'efl_ui_panel.c',
'efl_ui_datepicker.c',
'efl_ui_timepicker.c',
'efl_ui_tags.c',
'elm_slideshow.c',
'elm_spinner.c',
'elm_store.c',
'elm_systray.c',
'elm_systray_watcher.c',
'elm_sys_notify_interface.c',
'elm_sys_notify.c',
'elm_sys_notify_dbus.c',
'elm_table.c',
'elm_theme.c',
'elm_thumb.c',
'elm_toolbar.c',
'elm_transit.c',
'elm_util.c',
'efl_ui_video.c',
'elm_view_list.c',
'elm_view_form.c',
'elm_web2.c',
'efl_ui_widget.c',
'efl_ui_widget_common.c',
'efl_ui_win.c',
'efl_ui_win_inlined.c',
'efl_ui_win_socket.c',
'elm_helper.c',
'els_box.c',
'els_cursor.c',
'els_tooltip.c',
'elu_ews_wm.c',
'efl_ui_container_layout.c',
'efl_ui_container_layout.h',
'efl_ui_box.c',
'efl_ui_box_flow.c',
'efl_ui_box_stack.c',
'efl_ui_box_layout.c',
'efl_ui_box_private.h',
'efl_ui_popup.c',
'efl_ui_alert_popup.c',
'efl_ui_scroll_alert_popup.c',
'efl_ui_text_alert_popup.c',
'efl_ui_anchor_popup.c',
'efl_ui_table.c',
'efl_ui_table_static.c',
'efl_ui_table_layout.c',
'efl_ui_table_private.h',
'efl_ui_text.c',
'efl_ui_text_factory_images.c',
'efl_ui_text_factory_emoticons.c',
'efl_ui_text_factory_fallback.c',
'efl_ui_clock.c',
'efl_ui_clock_private.h',
'efl_ui_image_factory.c',
'efl_ui_focus_manager.c',
'efl_ui_focus_manager_calc.c',
'efl_ui_focus_manager_sub.c',
'efl_ui_focus_object.c',
'efl_ui_focus_manager_root_focus.c',
'efl_ui_textpath.c',
'efl_ui_focus_layer.c',
'efl_ui_focus_composition.c',
'efl_ui_focus_parent_provider.c',
'efl_ui_focus_parent_provider_standard.c',
'efl_ui_focus_parent_provider_gen.c',
'efl_ui_focus_util.c',
'elm_widget_item_static_focus.c',
'efl_ui_item.c',
'efl_ui_list_item.c',
'efl_ui_list_default_item.c',
'efl_ui_list_empty_item.c',
'efl_ui_list.c',
'efl_ui_grid_item.c',
'efl_ui_grid_default_item.c',
'efl_ui_grid.c',
'efl_ui_list_view.c',
'efl_ui_list_view_precise_layouter.c',
'efl_ui_list_view_seg_array.c',
'efl_ui_layout_factory.c',
'efl_ui_scroller.c',
'efl_ui_scroll_manager.c',
'efl_ui_pan.c',
'efl_ui_selection_manager.c',
'efl_ui_selection_manager_private.h',
'efl_ui_selection.c',
'efl_datetime_manager.c',
'efl_ui_dnd.c',
'elm_focus_legacy.c',
'efl_ui_pager.c',
'efl_page_transition.c',
'efl_page_transition_scroll.c',
'efl_page_indicator.c',
'efl_page_indicator_icon.c',
'efl_ui_focus_graph.h',
'efl_ui_focus_graph.c',
'efl_ui_tab_pager.c',
'efl_ui_tab_bar.c',
'efl_ui_tab_page.c',
'efl_ui_widget_focus_manager.c',
'efl_ui_caching_factory.c',
'efl_ui_widget_factory.c',
'efl_ui_size_model.c',
'efl_ui_homogeneous_model.c',
'efl_ui_exact_model.c',
'efl_ui_average_model.c',
'efl_ui_relative_layout.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]
elementary_pub_deps = [eina, eet, evas, ecore, ecore_evas, ecore_file, ecore_input, ecore_imf, ecore_con,
edje, eldbus, efreet, efreet_mime, efreet_trash, ethumb_client, efl, elocation]
elm_options = configuration_data()
config_h.set_quoted('ELM_TOP_BUILD_DIR', meson.build_root())
config_h.set_quoted('MODULES_PATH', join_paths(dir_lib, 'modules'))
config_h.set_quoted('ELEMENTARY_BASE_DIR', get_option('elementary-base-dir'))
config_h.set_quoted('ICON_DIR', join_paths(dir_lib, 'icons'))
if sys_windows == false
elm_options.set('ELM_UNIX', '1')
else
elm_options.set('DLL_EXPORT', '1')
endif
elm_options.set('ELM_ELOCATION', '1')
elm_options.set('ELM_EFREET', '1')
if config_h.has('HAVE_ALLOCA_H')
elm_options.set('ELM_ALLOCA_H', '1')
endif
if config_h.has('HAVE_LIBINTL_H')
elm_options.set('ELM_LIBINTL_H', '1')
endif
if config_h.has('HAVE_DIRENT_H')
elm_options.set('ELM_DIRENT_H', '1')
endif
if get_option('x11')
config_h.set('HAVE_ELEMENTARY_X', '1')
elementary_deps += ecore_x
endif
if get_option('wl')
config_h.set('HAVE_ELEMENTARY_WL2', '1')
elementary_deps += ecore_wl2
endif
if get_option('drm')
config_h.set('HAVE_ELEMENTARY_DRM', '1')
elementary_deps += ecore_drm2
endif
if get_option('cocoa')
config_h.set('HAVE_ELEMENTARY_COCOA', '1')
elementary_deps += ecore_cocoa
endif
c = configure_file(
output: 'Elementary_Options.h',
install : true,
install_dir : dir_package_include,
configuration: elm_options)
elm_package_c_args = package_c_args + ['-DELEMENTARY_BUILD=1']
elementary_lib = library('elementary',
elementary_src, pub_eo_file_target, priv_eo_file_target, c,
dependencies: elementary_pub_deps + elementary_deps,
include_directories : config_dir + [include_directories('.')] + [include_directories(join_paths('..', '..', '..'))] + [ecore_evas_wayland_engine_include_dir],
install: true,
c_args : elm_package_c_args,
version : meson.project_version()
)
elementary = declare_dependency(
include_directories: [include_directories('.')],
link_with: elementary_lib,
sources : pub_eo_file_target + priv_eo_file_target,
dependencies: elementary_pub_deps,
)
install_data(pub_eo_files + pub_eo_types_files,
install_dir: join_paths(eolian_include_dir, package_version_name)
)
install_headers(elementary_header_src,
install_dir : dir_package_include,
)
elementary_config_dir = include_directories('.')
package_pc_variables = ['themes='+join_paths(dir_data, package_name, 'themes')]