The EFL_ACCESS_WINDOW_INTERFACE was used to check if an object is window.
This could make sense. But it would be better to use EFL_UI_WIN_CLASS for
consistency.
A window is using ecore_evas geometry value for its evas_object geometry value.
The evas_output_viewport x(y) value which is used in _elm_widget_onscreen_is
is always 0. So _elm_widget_onscreen_is could return EINA_FALSE, if ecore_evas
geometry x(y) value is bigger than 0, even though a window object is on screen.
So it is not correct to compare ecore_output_viewport and evas_object geometry
for a window object. Moreover it does not make sense.
Units now form an actual tree stored in their own hash. This will
later replace all global state of Eolian, by introducing a master
unit that you will pass around.
Listing it here without guards will break for builds without c# enabled.
It was actually taken care of a few lines below where it gets included
with the right guards. This one was just around by accident I think.
This API is meant to be used by parts only, and by bindings dealing with
part objects. This patch fixes make check which got broken in the after
the previous one (cxx).
This resolves a few issues and brings back the experimental features.
Also, disable some of the ugliest experiments:
- manual function overrides,
- define APIs only in eo_cxx namespace
Some APIs are generated behind EFL_CXXPERIMENT (eg. event_name_cb_add or
some weak pointer stuff). I believe they are useful but would like to
make sure there are no serious drawbacks with generating those.
This is really just calling efl_del() and detaching the internal pointer
from the C++ object. This will not affect other references, which means
after del the object may still be alive, probably without a parent.
This prevents generation of del().
I also removed constructor, finalize and destructor as I believe this
requires special work with eo_inherit (where did this work go??).
This will be used for things like efl_del
efl_part was a lucky case where the entire class was to be implemented
manually, thus the global header guard was sufficient.
The c++ header was checking the wrong header guard. Fixing that would
break the compilation test, as it was doing the wrong thing. Also I
think config.h should not be included for compilation tests. This should
make things slightly better.
It's VERY hacky, but works as expected: no leak, no extra unref. This is
a lucky case of simply overriding efl_part() implementation in C++,
without having to modify the declaration.
This is part of the experimental stuff.
Allows calling C functions without using ._eo_ptr() explicitly. Probably
not super useful, assuming the interfaces are done :)
Add an experimental (disabled) macro to only generate functions inside
the eo_cxx equivalent of a class, instead of inside both the eo_cxx and
the normal class definition.
I guess the duplicated definition had something to do with doxygen, but
I'm not sure this is quite necessary as doc will be generated with
custom scripts.
I'll hide some controversial features behind this, until we come to an
agreement with @felipealmeida and people who actually know C++ (iow: not
just me^^).
Features protected:
- easy wref (using -> without locking)
- xxx_event_cb_add() functions in object classes
- instantiate(obj) to create a new object
- add as a synonym for instantiate (both in efl::eo)