Proxy Elementary widget signals to Edje.
authorGustavo Sverzut Barbieri <barbieri@gmail.com>
Fri, 26 Mar 2010 00:58:14 +0000 (00:58 +0000)
committerGustavo Sverzut Barbieri <barbieri@gmail.com>
Fri, 26 Mar 2010 00:58:14 +0000 (00:58 +0000)
commit0fa8bd1b3d6180bfcecb9269041a0dd6efd9ca60
tree0f8f1f743234397e5e8f12b70deaedf494825601
parent6ef61679ab19774d634867cc8f499393006e1841
Proxy Elementary widget signals to Edje.

Add support to automatic proxy events from Elementary to Edje using
callbacks described with Evas_Smart_Cb_Description and set to
Evas_Smart_Class or per-instance with
evas_object_smart_callbacks_descriptions_set().

Right now elm_widget is not subclassable, so there is no way to define
class signals, just instance signals.

Just doing it for button, lots of widgets to do... If you can help,
please follow the process:

  * see example at src/lib/elm_button.c, copy it.

  * read your widget documentation at Elementary.h

  * grep for evas_object_smart_callback_call(), see if they are all
    documented in Elementary.h, or if there are some missing. Fix Elementary.h

  * paste and change based on fixed Elementary.h My recommendation is
    to create "static const char []" variables and replace all
    evas_object_smart_callback_call() with that, to force sync.

With callback descriptions pre-defined and using the same pointer with
a custom variation evas_object_smart_callback_call_ptr() we may later
optimize signal calling heavily, removing the requirement to call
eina_stringshare_add()/eina_stringshare_del() and also not mixing all
the callbacks in teh same list, instead having an array for defined
signals, and a list from there.  These optimizations are not in, but
they are easily added later without breaking the API/ABI.

SVN revision: 47461
src/edje_externals/elm.c
src/edje_externals/private.h
src/lib/Elementary.h.in
src/lib/elm_button.c