Get us some nice auto translation scheme
[framework/uifw/elementary.git] / src / lib / Elementary.h.in
index 3fbc1d1..241d73f 100644 (file)
@@ -29,8 +29,7 @@ of flexibility.
 One can divide Elemementary into three main groups:
 @li @ref infralist - These are modules that deal with Elementary as a whole.
 @li @ref widgetslist - These are the widgets you'll compose your UI out of.
-@li @ref containerslist - These are the containers in which the widgets will be
-                          layouted.
+@li @ref containerslist - These are the containers which hold the widgets.
 
 @section license License
 
@@ -52,7 +51,7 @@ organisations behind this, as listed in the @ref authors page.
  *
 @code
 #include <Elementary.h>
-EAPI int
+EAPI_MAIN int
 elm_main(int argc, char **argv)
 {
    // create window(s) here and do any application init
@@ -65,7 +64,7 @@ ELM_MAIN()
  *
  * To use autotools (which helps in many ways in the long run, like being able
  * to immediately create releases of your software directly from your tree
- * and ensure everything needed to buiuld it is there) you will need a
+ * and ensure everything needed to build it is there) you will need a
  * configure.ac, Makefile.am and autogen.sh file.
  *
  * configure.ac:
@@ -176,7 +175,7 @@ make maintainer-clean
  * There is a more advanced way of making use of the quicklaunch infrastructure
  * in Elementary (which will not be covered here due to its more advanced
  * nature).
- * 
+ *
  * Now let's actually create an interactive "Hello World" gui that you can
  * click the ok button to exit. It's more code because this now does something
  * much more significant, but it's still very simple:
@@ -191,24 +190,24 @@ on_done(void *data, Evas_Object *obj, void *event_info)
    elm_exit();
 }
 
-EAPI int
+EAPI_MAIN int
 elm_main(int argc, char **argv)
 {
    Evas_Object *win, *bg, *box, *lab, *btn;
-   
+
    // new window - do the usual and give it a name, title and delete handler
    win = elm_win_add(NULL, "hello", ELM_WIN_BASIC);
    elm_win_title_set(win, "Hello");
    // when the user clicks "close" on a window there is a request to delete
    evas_object_smart_callback_add(win, "delete,request", on_done, NULL);
-   
+
    // add a standard bg
    bg = elm_bg_add(win);
    // add object as a resize object for the window (controls window minimum
    // size as well as gets resized if window is resized)
    elm_win_resize_object_add(win, bg);
    evas_object_show(bg);
-   
+
    // add a box object - default is vertical. a box holds children in a row,
    // either horizontally or vertically. nothing more.
    box = elm_box_add(win);
@@ -218,7 +217,7 @@ elm_main(int argc, char **argv)
    // size as well as gets resized if window is resized)
    elm_win_resize_object_add(win, box);
    evas_object_show(box);
-   
+
    // add a label widget, set the text and put it in the pad frame
    lab = elm_label_add(win);
    // set default text of the label
@@ -226,7 +225,7 @@ elm_main(int argc, char **argv)
    // pack the label at the end of the box
    elm_box_pack_end(box, lab);
    evas_object_show(lab);
-   
+
    // add an ok button
    btn = elm_button_add(win);
    // set default text of button to "OK"
@@ -236,17 +235,17 @@ elm_main(int argc, char **argv)
    evas_object_show(btn);
    // call on_done when button is clicked
    evas_object_smart_callback_add(btn, "clicked", on_done, NULL);
-   
+
    // now we are done, show the window
    evas_object_show(win);
-   
+
    // run the mainloop and process events and callbacks
    elm_run();
    return 0;
 }
 ELM_MAIN()
 @endcode
-   * 
+   *
    */
 
 /**
@@ -293,6 +292,13 @@ ELM_MAIN()
 @author Shinwoo Kim <kimcinoo@@gmail.com>
 @author Govindaraju SM <govi.sm@@samsung.com> <govism@@gmail.com>
 @author Prince Kumar Dubey <prince.dubey@@samsung.com> <prince.dubey@@gmail.com>
+@author Sung W. Park <sungwoo@gmail.com>
+@author Thierry el Borgi <thierry@substantiel.fr>
+@author Shilpa Singh <shilpa.singh@samsung.com> <shilpasingh.o@gmail.com>
+@author Chanwook Jung <joey.jung@samsung.com>
+@author Hyoyoung Chang <hyoyoung.chang@samsung.com>
+@author Guillaume "Kuri" Friloux <guillaume.friloux@asp64.com>
+@author Kim Yunhan <spbear@gmail.com>
 
 Please contact <enlightenment-devel@lists.sourceforge.net> to get in
 contact with the developers and maintainers.
@@ -314,6 +320,7 @@ contact with the developers and maintainers.
 @ELM_EDBUS_DEF@ ELM_EDBUS
 @ELM_EFREET_DEF@ ELM_EFREET
 @ELM_ETHUMB_DEF@ ELM_ETHUMB
+@ELM_WEB_DEF@ ELM_WEB
 @ELM_EMAP_DEF@ ELM_EMAP
 @ELM_DEBUG_DEF@ ELM_DEBUG
 @ELM_ALLOCA_H_DEF@ ELM_ALLOCA_H
@@ -416,6 +423,11 @@ contact with the developers and maintainers.
 # endif
 #endif /* ! _WIN32 */
 
+#ifdef _WIN32
+# define EAPI_MAIN
+#else
+# define EAPI_MAIN EAPI
+#endif
 
 /* allow usage from c++ */
 #ifdef __cplusplus
@@ -479,6 +491,12 @@ extern "C" {
    EAPI extern int ELM_ECORE_EVENT_ETHUMB_CONNECT;
 
    /**
+    * Emitted when the application has reconfigured elementary settings due
+    * to an external configuration tool asking it to.
+    */
+   EAPI extern int ELM_EVENT_CONFIG_ALL_CHANGED;
+
+   /**
     * Emitted when any Elementary's policy value is changed.
     */
    EAPI extern int ELM_EVENT_POLICY_CHANGED;
@@ -507,7 +525,7 @@ extern "C" {
     */
     typedef enum _Elm_Policy
     {
-        ELM_POLICY_QUIT, /**< under which circunstances the application
+        ELM_POLICY_QUIT, /**< under which circumstances the application
                           * should quit automatically. @see
                           * Elm_Policy_Quit.
                           */
@@ -548,6 +566,19 @@ extern "C" {
         ELM_WRAP_LAST
      } Elm_Wrap_Type;
 
+   typedef enum
+     {
+        ELM_INPUT_PANEL_LAYOUT_NORMAL,          /**< Default layout */
+        ELM_INPUT_PANEL_LAYOUT_NUMBER,          /**< Number layout */
+        ELM_INPUT_PANEL_LAYOUT_EMAIL,           /**< Email layout */
+        ELM_INPUT_PANEL_LAYOUT_URL,             /**< URL layout */
+        ELM_INPUT_PANEL_LAYOUT_PHONENUMBER,     /**< Phone Number layout */
+        ELM_INPUT_PANEL_LAYOUT_IP,              /**< IP layout */
+        ELM_INPUT_PANEL_LAYOUT_MONTH,           /**< Month layout */
+        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY,      /**< Number Only layout */
+        ELM_INPUT_PANEL_LAYOUT_INVALID
+     } Elm_Input_Panel_Layout;
+
    /**
     * @typedef Elm_Object_Item
     * An Elementary Object item handle.
@@ -574,7 +605,7 @@ extern "C" {
     */
    typedef Evas_Object *(*Elm_Tooltip_Item_Content_Cb) (void *data, Evas_Object *obj, Evas_Object *tooltip, void *item);
 
-   typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info);
+   typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data will receive the user data pointer passed to elm_object_event_callback_add(). @a src will be a pointer to the widget on which the input event took place. @a type will get the type of this event and @a event_info, the struct with details on this event. */
 
 #ifndef ELM_LIB_QUICKLAUNCH
 #define ELM_MAIN() int main(int argc, char **argv) {elm_init(argc, argv); return elm_main(argc, argv);} /**< macro to be used after the elm_main() function */
@@ -593,7 +624,7 @@ extern "C" {
     * @return The init counter value.
     *
     * This function initializes Elementary and increments a counter of
-    * the number of calls to it. It returs the new counter's value.
+    * the number of calls to it. It returns the new counter's value.
     *
     * @warning This call is exported only for use by the @c ELM_MAIN()
     * macro. There is no need to use this if you use this macro (which
@@ -881,6 +912,14 @@ extern "C" {
    EAPI Eina_Bool    elm_need_ethumb(void);
 
    /**
+    * This must be called before any other function that handle with
+    * elm_web objects or ewk_view instances.
+    *
+    * @ingroup Web
+    */
+   EAPI Eina_Bool    elm_need_web(void);
+
+   /**
     * Set a new policy's value (for a given policy group/identifier).
     *
     * @param policy policy identifier, as in @ref Elm_Policy.
@@ -914,6 +953,27 @@ extern "C" {
    EAPI int          elm_policy_get(unsigned int policy);
 
    /**
+    * Change the language of the current application
+    *
+    * The @p lang passed must be the full name of the locale to use, for
+    * example "en_US.utf8" or "es_ES@euro".
+    *
+    * Changing language with this function will make Elementary run through
+    * all its widgets, translating strings set with
+    * elm_object_domain_translatable_text_part_set(). This way, an entire
+    * UI can have its language changed without having to restart the program.
+    *
+    * For more complex cases, like having formatted strings that need
+    * translation, widgets will also emit a "language,changed" signal that
+    * the user can listen to to manually translate the text.
+    *
+    * @param lang Language to set, must be the full name of the locale
+    *
+    * @ingroup General
+    */
+   EAPI void         elm_language_set(const char *lang);
+
+   /**
     * Set a label of an object
     *
     * @param obj The Elementary object
@@ -944,6 +1004,53 @@ extern "C" {
 #define elm_object_text_get(obj) elm_object_text_part_get((obj), NULL)
 
    /**
+    * Set the text for an objects part, marking it as translatable
+    *
+    * The string to set as @p text must be the original one. Do not pass the
+    * return of @c gettext() here. Elementary will translate the string
+    * internally and set it on the object using elm_object_text_part_set(),
+    * also storing the original string so that it can be automatically
+    * translated when the language is changed with elm_language_set().
+    *
+    * The @p domain will be stored along to find the translation in the
+    * correct catalog. It can be NULL, in which case it will use whatever
+    * domain was set by the application with @c textdomain(). This is useful
+    * in case you are building a library on top of Elementary that will have
+    * its own translatable strings, that should not be mixed with those of
+    * programs using the library.
+    *
+    * @param obj The object
+    * @param part The name of the part to set
+    * @param domain The translation domain to use
+    * @param text The original, non-translated text to set
+    *
+    * @ingroup General
+    */
+   EAPI void         elm_object_domain_translatable_text_part_set(Evas_Object *obj, const char *part, const char *domain, const char *text);
+
+#define elm_object_domain_translatable_text_set(obj, domain, text) elm_object_domain_translatable_text_part_set((obj), NULL, (domain), (text))
+
+#define elm_object_translatable_text_set(obj, text) elm_object_domain_translatable_text_part_set((obj), NULL, NULL, (text))
+
+   /**
+    * Gets the original string set as translatable for an object
+    *
+    * When setting translated strings, the function elm_object_text_part_get()
+    * will return the translation returned by @c gettext(). To get the
+    * original string use this function.
+    *
+    * @param obj The object
+    * @param part The name of the part that was set
+    *
+    * @return The original, untranslated string
+    *
+    * @ingroup General
+    */
+   EAPI const char  *elm_object_translatable_text_part_get(const Evas_Object *obj, const char *part);
+
+#define elm_object_translatable_text_get(obj) elm_object_translatable_text_part_get((obj), NULL)
+
+   /**
     * Set a content of an object
     *
     * @param obj The Elementary object
@@ -988,10 +1095,22 @@ extern "C" {
 #define elm_object_content_unset(obj) elm_object_content_part_unset((obj), NULL)
 
    /**
+    * Get the wiget object's handle which contains a given item
+    *
+    * @param item The Elementary object item 
+    * @return The widget object
+    *
+    * @note This returns the widget object itself that an item belongs to.
+    *
+    * @ingroup General
+    */
+   EAPI Evas_Object *elm_object_item_object_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+
+   /**
     * Set a content of an object item
     *
     * @param it The Elementary object item
-    * @param part The content part name to unset (NULL for the default content)
+    * @param part The content part name to set (NULL for the default content)
     * @param content The new content of the object item
     *
     * @note Elementary object items may have many contents
@@ -1013,9 +1132,9 @@ extern "C" {
     *
     * @ingroup General
     */
-   EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *item);
+   EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part);
 
-#define elm_object_item_content_get(it, content) elm_object_item_content_part_get((it), NULL, (content))
+#define elm_object_item_content_get(it) elm_object_item_content_part_get((it), NULL)
 
    /**
     * Unset a content of an object item
@@ -1029,10 +1148,10 @@ extern "C" {
     */
    EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part);
 
-#define elm_object_item_content_unset(it, content) elm_object_item_content_part_unset((it), (content))
+#define elm_object_item_content_unset(it) elm_object_item_content_part_unset((it), NULL)
 
    /**
-    * Set a label of an objec itemt
+    * Set a label of an object item
     *
     * @param it The Elementary object item
     * @param part The text part name to set (NULL for the default label)
@@ -1059,7 +1178,59 @@ extern "C" {
     */
    EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part);
 
-#define elm_object_item_text_get(it) elm_object_item_part_text_get((it), NULL)
+#define elm_object_item_text_get(it) elm_object_item_text_part_get((it), NULL)
+
+   /**
+    * Set the text to read out when in accessibility mode
+    *
+    * @param obj The object which is to be described
+    * @param txt The text that describes the widget to people with poor or no vision
+    *
+    * @ingroup General
+    */
+   EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt);
+
+   /**
+    * Set the text to read out when in accessibility mode
+    *
+    * @param it The object item which is to be described
+    * @param txt The text that describes the widget to people with poor or no vision
+    *
+    * @ingroup General
+    */
+   EAPI void elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt);
+
+   /**
+    * Get the data associated with an object item
+    * @param it The object item
+    * @return The data associated with @p it
+    *
+    * @ingroup General
+    */
+   EAPI void *elm_object_item_data_get(const Elm_Object_Item *it);
+
+   /**
+    * Set the data associated with an object item
+    * @param it The object item
+    * @param data The data to be associated with @p it
+    *
+    * @ingroup General
+    */
+   EAPI void elm_object_item_data_set(Elm_Object_Item *it, void *data);
+
+   /**
+    * Send a signal to the edje object of the widget item.
+    *
+    * This function sends a signal to the edje object of the obj item. An
+    * edje program can respond to a signal by specifying matching
+    * 'signal' and 'source' fields.
+    *
+    * @param it The Elementary object item
+    * @param emission The signal's name.
+    * @param source The signal's source.
+    * @ingroup General
+    */
+   EAPI void             elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source) EINA_ARG_NONNULL(1);
 
    /**
     * @}
@@ -1075,8 +1246,18 @@ extern "C" {
     */
 
    /**
-    * Flush all caches & dump all data that can be to lean down to use
-    * less memory
+    * @brief Flush all caches.
+    *
+    * Frees all data that was in cache and is not currently being used to reduce
+    * memory usage. This frees Edje's, Evas' and Eet's cache. This is equivalent
+    * to calling all of the following functions:
+    * @li edje_file_cache_flush()
+    * @li edje_collection_cache_flush()
+    * @li eet_clearcache()
+    * @li evas_image_cache_flush()
+    * @li evas_font_cache_flush()
+    * @li evas_render_dump()
+    * @note Evas caches are flushed for every canvas associated with a window.
     *
     * @ingroup Caches
     */
@@ -1366,6 +1547,68 @@ extern "C" {
    EAPI double       elm_object_scale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
+    * @defgroup Password_last_show Password last input show
+    *
+    * Last show feature of password mode enables user to view
+    * the last input entered for few seconds before masking it.
+    * These functions allow to set this feature in password mode
+    * of entry widget and also allow to manipulate the duration
+    * for which the input has to be visible.
+    *
+    * @{
+    */
+
+   /**
+    * Get show last setting of password mode.
+    *
+    * This gets the show last input setting of password mode which might be
+    * enabled or disabled.
+    *
+    * @return @c EINA_TRUE, if the last input show setting is enabled, @c EINA_FALSE
+    *            if it's disabled.
+    * @ingroup Password_last_show
+    */
+   EAPI Eina_Bool elm_password_show_last_get(void);
+
+   /**
+    * Set show last setting in password mode.
+    *
+    * This enables or disables show last setting of password mode.
+    *
+    * @param password_show_last If EINA_TRUE enable's last input show in password mode.
+    * @see elm_password_show_last_timeout_set()
+    * @ingroup Password_last_show
+    */
+   EAPI void elm_password_show_last_set(Eina_Bool password_show_last);
+
+   /**
+    * Get's the timeout value in last show password mode.
+    *
+    * This gets the time out value for which the last input entered in password
+    * mode will be visible.
+    *
+    * @return The timeout value of last show password mode.
+    * @ingroup Password_last_show
+    */
+   EAPI double elm_password_show_last_timeout_get(void);
+
+   /**
+    * Set's the timeout value in last show password mode.
+    *
+    * This sets the time out value for which the last input entered in password
+    * mode will be visible.
+    *
+    * @param password_show_last_timeout The timeout value.
+    * @see elm_password_show_last_set()
+    * @ingroup Password_last_show
+    */
+   EAPI void elm_password_show_last_timeout_set(double password_show_last_timeout);
+
+   /**
+    * @}
+    */
+
+   /**
     * @defgroup UI-Mirroring Selective Widget mirroring
     *
     * These functions allow you to set ui-mirroring on specific
@@ -1730,6 +1973,7 @@ extern "C" {
     * @li "software_16_sdl"
     * @li "opengl_sdl"
     * @li "buffer"
+    * @li "ews"
     *
     * @{
     */
@@ -2194,9 +2438,13 @@ extern "C" {
    EAPI void             elm_object_focus_custom_chain_set(Evas_Object *obj, Eina_List *objs) EINA_ARG_NONNULL(1);
 
    /**
-    * Unset custom focus chain
+    * Unset a custom focus chain on a given Elementary widget
+    *
+    * @param obj The container object to remove focus chain from
+    *
+    * Any focus chain previously set on @p obj (for its child objects)
+    * is removed entirely after this call.
     *
-    * @param obj The container object
     * @ingroup Focus
     */
    EAPI void             elm_object_focus_custom_chain_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -2656,6 +2904,46 @@ extern "C" {
    EAPI void             elm_scroll_thumbscroll_border_friction_all_set(double friction);
 
    /**
+    * Get the sensitivity amount which is be multiplied by the length of
+    * mouse dragging.
+    *
+    * @return the thumb scroll sensitivity friction
+    *
+    * @ingroup Scrolling
+    */
+   EAPI double           elm_scroll_thumbscroll_sensitivity_friction_get(void);
+
+   /**
+    * Set the sensitivity amount which is be multiplied by the length of
+    * mouse dragging.
+    *
+    * @param friction the thumb scroll sensitivity friction. @c 0.1 for
+    *        minimun sensitivity, @c 1.0 for maximum sensitivity. 0.25
+    *        is proper.
+    *
+    * @see elm_thumbscroll_sensitivity_friction_get()
+    * @note parameter value will get bound to 0.1 - 1.0 interval, always
+    *
+    * @ingroup Scrolling
+    */
+   EAPI void             elm_scroll_thumbscroll_sensitivity_friction_set(double friction);
+
+   /**
+    * Set the sensitivity amount which is be multiplied by the length of
+    * mouse dragging, for all Elementary application windows.
+    *
+    * @param friction the thumb scroll sensitivity friction. @c 0.1 for
+    *        minimun sensitivity, @c 1.0 for maximum sensitivity. 0.25
+    *        is proper.
+    *
+    * @see elm_thumbscroll_sensitivity_friction_get()
+    * @note parameter value will get bound to 0.1 - 1.0 interval, always
+    *
+    * @ingroup Scrolling
+    */
+   EAPI void             elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction);
+
+   /**
     * @}
     */
 
@@ -2664,7 +2952,7 @@ extern "C" {
     *
     * Objects when inside a scroller can scroll, but this may not always be
     * desirable in certain situations. This allows an object to hint to itself
-    * and parents to "not scroll" in one of 2 ways. If any chilkd object of a
+    * and parents to "not scroll" in one of 2 ways. If any child object of a
     * scroller has pushed a scroll freeze or hold then it affects all parent
     * scrollers until all children have released them.
     *
@@ -2805,7 +3093,7 @@ extern "C" {
    EAPI void             elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data) EINA_ARG_NONNULL(1, 4);
 
    /**
-    * Remove a signal-triggered callback from an widget edje object.
+    * Remove a signal-triggered callback from a widget edje object.
     *
     * This function removes a callback, previoulsy attached to a
     * signal emitted by the edje object of the obj.  The parameters
@@ -2824,26 +3112,59 @@ extern "C" {
    EAPI void            *elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func) EINA_ARG_NONNULL(1, 4);
 
    /**
-    * Add a callback for a event emitted by widget or their children.
+    * Add a callback for input events (key up, key down, mouse wheel)
+    * on a given Elementary widget
+    *
+    * @param obj The widget to add an event callback on
+    * @param func The callback function to be executed when the event
+    * happens
+    * @param data Data to pass in to @p func
+    *
+    * Every widget in an Elementary interface set to receive focus,
+    * with elm_object_focus_allow_set(), will propagate @b all of its
+    * key up, key down and mouse wheel input events up to its parent
+    * object, and so on. All of the focusable ones in this chain which
+    * had an event callback set, with this call, will be able to treat
+    * those events. There are two ways of making the propagation of
+    * these event upwards in the tree of widgets to @b cease:
+    * - Just return @c EINA_TRUE on @p func. @c EINA_FALSE will mean
+    *   the event was @b not processed, so the propagation will go on.
+    * - The @c event_info pointer passed to @p func will contain the
+    *   event's structure and, if you OR its @c event_flags inner
+    *   value to @c EVAS_EVENT_FLAG_ON_HOLD, you're telling Elementary
+    *   one has already handled it, thus killing the event's
+    *   propagation, too.
+    *
+    * @note Your event callback will be issued on those events taking
+    * place only if no other child widget of @obj has consumed the
+    * event already.
+    *
+    * @note Not to be confused with @c
+    * evas_object_event_callback_add(), which will add event callbacks
+    * per type on general Evas objects (no event propagation
+    * infrastructure taken in account).
+    *
+    * @note Not to be confused with @c
+    * elm_object_signal_callback_add(), which will add callbacks to @b
+    * signals coming from a widget's theme, not input events.
+    *
+    * @note Not to be confused with @c
+    * edje_object_signal_callback_add(), which does the same as
+    * elm_object_signal_callback_add(), but directly on an Edje
+    * object.
     *
-    * This function connects a callback function to any key_down key_up event
-    * emitted by the @p obj or their children.
-    * This only will be called if no other callback has consumed the event.
-    * If you want consume the event, and no other get it, func should return
-    * EINA_TRUE and put EVAS_EVENT_FLAG_ON_HOLD in event_flags.
+    * @note Not to be confused with @c
+    * evas_object_smart_callback_add(), which adds callbacks to smart
+    * objects' <b>smart events</b>, and not input events.
     *
-    * @warning Accept duplicated callback addition.
+    * @see elm_object_event_callback_del()
     *
-    * @param obj The object
-    * @param func The callback function to be executed when the event is
-    * emitted.
-    * @param data Data to pass in to the callback function.
     * @ingroup General
     */
    EAPI void             elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
 
    /**
-    * Remove a event callback from an widget.
+    * Remove an event callback from a widget.
     *
     * This function removes a callback, previoulsy attached to event emission
     * by the @p obj.
@@ -3269,6 +3590,18 @@ extern "C" {
     * for more information.
     */
    EAPI Elm_Theme       *elm_object_theme_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get a data item from a theme
+    *
+    * @param th The theme, or NULL for default theme
+    * @param key The data key to search with
+    * @return The data value, or NULL on failure
+    *
+    * This function is used to return data items from edc in @p th, an overlay, or an extension.
+    * It works the same way as edje_file_data_get() except that the return is stringshared.
+    */
+   EAPI const char      *elm_theme_data_get(Elm_Theme *th, const char *key) EINA_ARG_NONNULL(2);
    /**
     * @}
     */
@@ -3310,6 +3643,7 @@ extern "C" {
     * (Windows CE rendering via GDI with 16bit software renderer)
     * @li "sdl-16", "software-16-sdl", "software_16_sdl" (Rendering to SDL
     * buffer with 16bit software renderer)
+    * @li "ews" (rendering to EWS - Ecore + Evas Single Process Windowing System)
     *
     * All engines use a simple string to select the engine to render, EXCEPT
     * the "shot" engine. This actually encodes the output of the virtual
@@ -4484,7 +4818,7 @@ extern "C" {
     * @ingroup Icon
     */
    EAPI void                  elm_icon_file_get(const Evas_Object *obj, const char **file, const char **group) EINA_ARG_NONNULL(1);
-   EAPI void                  elm_icon_thumb_set(const Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
+   EAPI void                  elm_icon_thumb_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
    /**
     * Set the icon by icon standards names.
     *
@@ -4587,12 +4921,12 @@ extern "C" {
     */
    EAPI Eina_Bool             elm_icon_no_scale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
-    * Set if the object is (up/down) resizeable.
+    * Set if the object is (up/down) resizable.
     *
     * @param obj The icon object
-    * @param scale_up A bool to set if the object is resizeable up. Default is
+    * @param scale_up A bool to set if the object is resizable up. Default is
     * @c EINA_TRUE.
-    * @param scale_down A bool to set if the object is resizeable down. Default
+    * @param scale_down A bool to set if the object is resizable down. Default
     * is @c EINA_TRUE.
     *
     * This function limits the icon object resize ability. If @p scale_up is set to
@@ -4605,11 +4939,11 @@ extern "C" {
     */
    EAPI void                  elm_icon_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down) EINA_ARG_NONNULL(1);
    /**
-    * Get if the object is (up/down) resizeable.
+    * Get if the object is (up/down) resizable.
     *
     * @param obj The icon object
-    * @param scale_up A bool to set if the object is resizeable up
-    * @param scale_down A bool to set if the object is resizeable down
+    * @param scale_up A bool to set if the object is resizable up
+    * @param scale_down A bool to set if the object is resizable down
     *
     * @see elm_icon_scale_set()
     *
@@ -4722,6 +5056,70 @@ extern "C" {
     * @ingroup Icon
     */
    EAPI Elm_Icon_Lookup_Order elm_icon_order_lookup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Get if the icon supports animation or not.
+    *
+    * @param obj The icon object
+    * @return @c EINA_TRUE if the icon supports animation,
+    *         @c EINA_FALSE otherwise.
+    *
+    * Return if this elm icon's image can be animated. Currently Evas only
+    * supports gif animation. If the return value is EINA_FALSE, other
+    * elm_icon_animated_XXX APIs won't work.
+    * @ingroup Icon
+    */
+   EAPI Eina_Bool           elm_icon_animated_available_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set animation mode of the icon.
+    *
+    * @param obj The icon object
+    * @param anim @c EINA_TRUE if the object do animation job,
+    * @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
+    *
+    * Even though elm icon's file can be animated,
+    * sometimes appication developer want to just first page of image.
+    * In that time, don't call this function, because default value is EINA_FALSE
+    * Only when you want icon support anition,
+    * use this function and set animated to EINA_TURE
+    * @ingroup Icon
+    */
+   EAPI void                elm_icon_animated_set(Evas_Object *obj, Eina_Bool animated) EINA_ARG_NONNULL(1);
+   /**
+    * Get animation mode of the icon.
+    *
+    * @param obj The icon object
+    * @return The animation mode of the icon object
+    * @see elm_icon_animated_set
+    * @ingroup Icon
+    */
+   EAPI Eina_Bool           elm_icon_animated_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set animation play mode of the icon.
+    *
+    * @param obj The icon object
+    * @param play @c EINA_TRUE the object play animation images,
+    * @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
+    *
+    * If you want to play elm icon's animation, you set play to EINA_TURE.
+    * For example, you make gif player using this set/get API and click event.
+    *
+    * 1. Click event occurs
+    * 2. Check play flag using elm_icon_animaged_play_get
+    * 3. If elm icon was playing, set play to EINA_FALSE.
+    *    Then animation will be stopped and vice versa
+    * @ingroup Icon
+    */
+   EAPI void                elm_icon_animated_play_set(Evas_Object *obj, Eina_Bool play) EINA_ARG_NONNULL(1);
+   /**
+    * Get animation play mode of the icon.
+    *
+    * @param obj The icon object
+    * @return The play mode of the icon object
+    *
+    * @see elm_icon_animated_lay_get
+    * @ingroup Icon
+    */
+   EAPI Eina_Bool           elm_icon_animated_play_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * @}
@@ -4732,6 +5130,7 @@ extern "C" {
     *
     * @image html img/widget/image/preview-00.png
     * @image latex img/widget/image/preview-00.eps
+
     *
     * An object that allows one to load an image file to it. It can be used
     * anywhere like any other elementary widget.
@@ -4895,12 +5294,12 @@ extern "C" {
     */
    EAPI Eina_Bool        elm_image_no_scale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
-    * Set if the object is (up/down) resizeable.
+    * Set if the object is (up/down) resizable.
     *
     * @param obj The image object
-    * @param scale_up A bool to set if the object is resizeable up. Default is
+    * @param scale_up A bool to set if the object is resizable up. Default is
     * @c EINA_TRUE.
-    * @param scale_down A bool to set if the object is resizeable down. Default
+    * @param scale_down A bool to set if the object is resizable down. Default
     * is @c EINA_TRUE.
     *
     * This function limits the image resize ability. If @p scale_up is set to
@@ -4913,11 +5312,11 @@ extern "C" {
     */
    EAPI void             elm_image_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down) EINA_ARG_NONNULL(1);
    /**
-    * Get if the object is (up/down) resizeable.
+    * Get if the object is (up/down) resizable.
     *
     * @param obj The image object
-    * @param scale_up A bool to set if the object is resizeable up
-    * @param scale_down A bool to set if the object is resizeable down
+    * @param scale_up A bool to set if the object is resizable up
+    * @param scale_down A bool to set if the object is resizable down
     *
     * @see elm_image_scale_set()
     *
@@ -5095,10 +5494,6 @@ extern "C" {
     */
    EAPI Eina_Bool        elm_image_aspect_ratio_retained_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
-   /* smart callbacks called:
-    * "clicked" - the user clicked the image
-    */
-
    /**
     * @}
     */
@@ -5600,6 +5995,19 @@ extern "C" {
    EAPI void                elm_box_align_get(const Evas_Object *obj, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
 
    /**
+    * Force the box to recalculate its children packing.
+    *
+    * If any children was added or removed, box will not calculate the
+    * values immediately rather leaving it to the next main loop
+    * iteration. While this is great as it would save lots of
+    * recalculation, whenever you need to get the position of a just
+    * added item you must force recalculate before doing so.
+    *
+    * @param obj The box object.
+    */
+   EAPI void                 elm_box_recalculate(Evas_Object *obj);
+
+   /**
     * Set the layout defining function to be used by the box
     *
     * Whenever anything changes that requires the box in @p obj to recalculate
@@ -6690,7 +7098,7 @@ extern "C" {
     * @param policy_v Vertical scrollbar policy
     *
     * This sets the scrollbar visibility policy for the given scroller.
-    * ELM_SCROLLER_POLICY_AUTO means the scrollber is made visible if it is
+    * ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if it is
     * needed, and otherwise kept hidden. ELM_SCROLLER_POLICY_ON turns it on all
     * the time, and ELM_SCROLLER_POLICY_OFF always keeps it off. This applies
     * respectively for the horizontal and vertical scrollbars.
@@ -6790,6 +7198,84 @@ extern "C" {
     */
    EAPI void         elm_scroller_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize) EINA_ARG_NONNULL(1);
    /**
+    * @brief Get scroll current page number.
+    *
+    * @param obj The scroller object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * The page number starts from 0. 0 is the first page.
+    * Current page means the page which meet the top-left of the viewport.
+    * If there are two or more pages in the viewport, it returns the number of page
+    * which meet the top-left of the viewport.
+    *
+    * @see elm_scroller_last_page_get()
+    * @see elm_scroller_page_show()
+    * @see elm_scroller_page_brint_in()
+    */
+   EAPI void         elm_scroller_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get scroll last page number.
+    *
+    * @param obj The scroller object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * The page number starts from 0. 0 is the first page.
+    * This returns the last page number among the pages.
+    *
+    * @see elm_scroller_current_page_get()
+    * @see elm_scroller_page_show()
+    * @see elm_scroller_page_brint_in()
+    */
+   EAPI void         elm_scroller_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+   /**
+    * Show a specific virtual region within the scroller content object by page number.
+    *
+    * @param obj The scroller object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * 0, 0 of the indicated page is located at the top-left of the viewport.
+    * This will jump to the page directly without animation.
+    *
+    * Example of usage:
+    *
+    * @code
+    * sc = elm_scroller_add(win);
+    * elm_scroller_content_set(sc, content);
+    * elm_scroller_page_relative_set(sc, 1, 0);
+    * elm_scroller_current_page_get(sc, &h_page, &v_page);
+    * elm_scroller_page_show(sc, h_page + 1, v_page);
+    * @endcode
+    *
+    * @see elm_scroller_page_bring_in()
+    */
+   EAPI void         elm_scroller_page_show(Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+   /**
+    * Show a specific virtual region within the scroller content object by page number.
+    *
+    * @param obj The scroller object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * 0, 0 of the indicated page is located at the top-left of the viewport.
+    * This will slide to the page with animation.
+    *
+    * Example of usage:
+    *
+    * @code
+    * sc = elm_scroller_add(win);
+    * elm_scroller_content_set(sc, content);
+    * elm_scroller_page_relative_set(sc, 1, 0);
+    * elm_scroller_last_page_get(sc, &h_page, &v_page);
+    * elm_scroller_page_bring_in(sc, h_page, v_page);
+    * @endcode
+    *
+    * @see elm_scroller_page_show()
+    */
+   EAPI void         elm_scroller_page_bring_in(Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+   /**
     * @brief Show a specific virtual region within the scroller content object.
     *
     * @param obj The scroller object
@@ -6818,7 +7304,7 @@ extern "C" {
     * This enables or disabled event propagation from the scroller content to
     * the scroller and its parent. By default event propagation is disabled.
     */
-   EAPI void         elm_scroller_propagate_events_set(Evas_Object *obj, Eina_Bool propagation);
+   EAPI void         elm_scroller_propagate_events_set(Evas_Object *obj, Eina_Bool propagation) EINA_ARG_NONNULL(1);
    /**
     * @brief Get event propagation for a scroller
     *
@@ -6829,7 +7315,35 @@ extern "C" {
     *
     * @see elm_scroller_propagate_events_set()
     */
-   EAPI Eina_Bool    elm_scroller_propagate_events_get(const Evas_Object *obj);
+   EAPI Eina_Bool    elm_scroller_propagate_events_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set scrolling gravity on a scroller
+    *
+    * @param obj The scroller object
+    * @param x The scrolling horizontal gravity
+    * @param y The scrolling vertical gravity
+    *
+    * It set scrolling gravity. It adds scrolling weight values
+    * to the scroller. Usually it uses for stopping the scroller.
+    * To set y as 0.0 for lower growing child objects,
+    * even though child objects are added to bottom, the scroller doesn't move.
+    * To set y as 1.0 for upper growing child objects. And x is horizontal gravity.
+    * By default 0.0 for x and y.
+    */
+   EAPI void         elm_scroller_gravity_set(Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get scrolling gravity values for a scroller
+    *
+    * @param obj The scroller object
+    * @param x The scrolling horizontal gravity
+    * @param y The scrolling vertical gravity
+    *
+    * This gets gravity values for a scroller.
+    *
+    * @see elm_scroller_gravity_set()
+    *
+    */
+   EAPI void         elm_scroller_gravity_get(const Evas_Object *obj, double *x, double *y) EINA_ARG_NONNULL(1);
    /**
     * @}
     */
@@ -7526,6 +8040,8 @@ extern "C" {
     *   is the gengrid item that was activated.
     * - @c "clicked,double" - The user has double-clicked an item.
     *   The @c event_info parameter is the gengrid item that was double-clicked.
+    * - @c "longpressed" - This is called when the item is pressed for a certain
+    *   amount of time. By default it's 1 second.
     * - @c "selected" - The user has made an item selected. The
     *   @c event_info parameter is the gengrid item that was selected.
     * - @c "unselected" - The user has made an item unselected. The
@@ -7543,6 +8059,10 @@ extern "C" {
     * - @c "changed" - Called when an item is added, removed, resized
     *   or moved and when the gengrid is resized or gets "horizontal"
     *   property changes.
+    * - @c "scroll,anim,start" - This is called when scrolling animation has
+    *   started.
+    * - @c "scroll,anim,stop" - This is called when scrolling animation has
+    *   stopped.
     * - @c "drag,start,up" - Called when the item in the gengrid has
     *   been dragged (not scrolled) up.
     * - @c "drag,start,down" - Called when the item in the gengrid has
@@ -7561,8 +8081,16 @@ extern "C" {
     *   started.
     * - @c "scroll,drag,stop" - called when dragging the content has
     *   stopped.
+    * - @c "scroll,edge,top" - This is called when the gengrid is scrolled until
+    *   the top edge.
+    * - @c "scroll,edge,bottom" - This is called when the gengrid is scrolled
+    *   until the bottom edge.
+    * - @c "scroll,edge,left" - This is called when the gengrid is scrolled
+    *   until the left edge.
+    * - @c "scroll,edge,right" - This is called when the gengrid is scrolled
+    *   until the right edge.
     *
-    * List of gendrid examples:
+    * List of gengrid examples:
     * @li @ref gengrid_example
     */
 
@@ -7612,6 +8140,7 @@ extern "C" {
     * This function inserts a new gengrid widget on the canvas.
     *
     * @see elm_gengrid_item_size_set()
+    * @see elm_gengrid_group_item_size_set()
     * @see elm_gengrid_horizontal_set()
     * @see elm_gengrid_item_append()
     * @see elm_gengrid_item_del()
@@ -7657,7 +8186,42 @@ extern "C" {
    EAPI void               elm_gengrid_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
 
    /**
-    * Set the items grid's alignment within a given gengrid widget
+    * Set the size for the group items of a given gengrid widget
+    *
+    * @param obj The gengrid object.
+    * @param w The group items' width.
+    * @param h The group items' height;
+    *
+    * A gengrid, after creation, has still no information on the size
+    * to give to each of its cells. So, you most probably will end up
+    * with squares one @ref Fingers "finger" wide, the default
+    * size. Use this function to force a custom size for you group items,
+    * making them as big as you wish.
+    *
+    * @see elm_gengrid_group_item_size_get()
+    *
+    * @ingroup Gengrid
+    */
+   EAPI void               elm_gengrid_group_item_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the size set for the group items of a given gengrid widget
+    *
+    * @param obj The gengrid object.
+    * @param w Pointer to a variable where to store the group items' width.
+    * @param h Pointer to a variable where to store the group items' height.
+    *
+    * @note Use @c NULL pointers on the size values you're not
+    * interested in: they'll be ignored by the function.
+    *
+    * @see elm_gengrid_group_item_size_get() for more details
+    *
+    * @ingroup Gengrid
+    */
+   EAPI void               elm_gengrid_group_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the items grid's alignment within a given gengrid widget
     *
     * @param obj The gengrid object.
     * @param align_x Alignment in the horizontal axis (0 <= align_x <= 1).
@@ -7874,7 +8438,7 @@ extern "C" {
     * @c EINA_FALSE otherwise
     *
     * This will make items in @p obj selectable or not. In the latter
-    * case, any user interacion on the gendrid items will neither make
+    * case, any user interaction on the gengrid items will neither make
     * them appear selected nor them call their selection callback
     * functions.
     *
@@ -8051,6 +8615,88 @@ extern "C" {
    EAPI void               elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize) EINA_ARG_NONNULL(1);
 
    /**
+    * @brief Get gengrid current page number.
+    *
+    * @param obj The gengrid object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * The page number starts from 0. 0 is the first page.
+    * Current page means the page which meet the top-left of the viewport.
+    * If there are two or more pages in the viewport, it returns the number of page
+    * which meet the top-left of the viewport.
+    *
+    * @see elm_gengrid_last_page_get()
+    * @see elm_gengrid_page_show()
+    * @see elm_gengrid_page_brint_in()
+    */
+   EAPI void         elm_gengrid_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+
+   /**
+    * @brief Get scroll last page number.
+    *
+    * @param obj The gengrid object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * The page number starts from 0. 0 is the first page.
+    * This returns the last page number among the pages.
+    *
+    * @see elm_gengrid_current_page_get()
+    * @see elm_gengrid_page_show()
+    * @see elm_gengrid_page_brint_in()
+    */
+   EAPI void         elm_gengrid_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+
+   /**
+    * Show a specific virtual region within the gengrid content object by page number.
+    *
+    * @param obj The gengrid object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * 0, 0 of the indicated page is located at the top-left of the viewport.
+    * This will jump to the page directly without animation.
+    *
+    * Example of usage:
+    *
+    * @code
+    * sc = elm_gengrid_add(win);
+    * elm_gengrid_content_set(sc, content);
+    * elm_gengrid_page_relative_set(sc, 1, 0);
+    * elm_gengrid_current_page_get(sc, &h_page, &v_page);
+    * elm_gengrid_page_show(sc, h_page + 1, v_page);
+    * @endcode
+    *
+    * @see elm_gengrid_page_bring_in()
+    */
+   EAPI void         elm_gengrid_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+
+   /**
+    * Show a specific virtual region within the gengrid content object by page number.
+    *
+    * @param obj The gengrid object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * 0, 0 of the indicated page is located at the top-left of the viewport.
+    * This will slide to the page with animation.
+    *
+    * Example of usage:
+    *
+    * @code
+    * sc = elm_gengrid_add(win);
+    * elm_gengrid_content_set(sc, content);
+    * elm_gengrid_page_relative_set(sc, 1, 0);
+    * elm_gengrid_last_page_get(sc, &h_page, &v_page);
+    * elm_gengrid_page_bring_in(sc, h_page, v_page);
+    * @endcode
+    *
+    * @see elm_gengrid_page_show()
+    */
+    EAPI void         elm_gengrid_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+
+   /**
     * Set for what direction a given gengrid widget will expand while
     * placing its items.
     *
@@ -11042,6 +11688,22 @@ extern "C" {
     */
    EAPI void         elm_entry_filter_accept_set(void *data, Evas_Object *entry, char **text) EINA_ARG_NONNULL(1, 3);
    /**
+    * Set the input panel layout of the entry
+    *
+    * @param obj The entry object
+    * @param layout layout type
+    */
+   EAPI void elm_entry_input_panel_layout_set(Evas_Object *obj, Elm_Input_Panel_Layout layout) EINA_ARG_NONNULL(1);
+   /**
+    * Get the input panel layout of the entry
+    *
+    * @param obj The entry object
+    * @return layout type
+    *
+    * @see elm_entry_input_panel_layout_set
+    */
+   EAPI Elm_Input_Panel_Layout elm_entry_input_panel_layout_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
     * @}
     */
 
@@ -11722,6 +12384,17 @@ extern "C" {
     */
    EAPI Eina_Bool    elm_photo_file_set(Evas_Object *obj, const char *file) EINA_ARG_NONNULL(1);
 
+    /**
+    * Set the file that will be used as thumbnail in the photo.
+    *
+    * @param obj The photo object.
+    * @param file The path to file that will be used as thumb.
+    * @param group The key used in case of an EET file.
+    *
+    * @ingroup Photo
+    */
+   EAPI void         elm_photo_thumb_set(const Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
+
    /**
     * Set the size that will be used on the photo
     *
@@ -11804,7 +12477,17 @@ extern "C" {
     * @ref Elm_Gesture_Zoom_Info is the info reported for @ref ELM_GESTURE_ZOOM gesture.
     *
     * @ref Elm_Gesture_Rotate_Info is the info reported for @ref ELM_GESTURE_ROTATE gesture.
-    * */
+    *
+    *
+    * Gesture Layer Tweaks:
+    *
+    * Note that line, flick, gestures can start without the need to remove fingers from surface.
+    * When user fingers rests on same-spot gesture is ended and starts again when fingers moved.
+    *
+    * Setting glayer_continues_enable to false in @ref Config will change this behavior
+    * so gesture starts when user touches (a *DOWN event) touch-surface
+    * and ends when no fingers touches surface (a *UP event).
+    */
 
    /**
     * @enum _Elm_Gesture_Types
@@ -12250,7 +12933,7 @@ extern "C" {
     * @code
     * #include <Elementary.h>
     * #ifndef ELM_LIB_QUICKLAUNCH
-    * EAPI int
+    * EAPI_MAIN int
     * elm_main(int argc, char **argv)
     * {
     *    Ethumb_Client *client;
@@ -12327,207 +13010,1058 @@ extern "C" {
     */
 
    /**
-    * @defgroup Hoversel Hoversel
+    * @defgroup Web Web
     *
-    * @image html img/widget/hoversel/preview-00.png
-    * @image latex img/widget/hoversel/preview-00.eps
+    * @image html img/widget/web/preview-00.png
+    * @image latex img/widget/web/preview-00.eps
     *
-    * A hoversel is a button that pops up a list of items (automatically
-    * choosing the direction to display) that have a label and, optionally, an
-    * icon to select from. It is a convenience widget to avoid the need to do
-    * all the piecing together yourself. It is intended for a small number of
-    * items in the hoversel menu (no more than 8), though is capable of many
-    * more.
+    * A web object is used for displaying web pages (HTML/CSS/JS)
+    * using WebKit-EFL. You must have compiled Elementary with
+    * ewebkit support.
     *
     * Signals that you can add callbacks for are:
-    * "clicked" - the user clicked the hoversel button and popped up the sel
-    * "selected" - an item in the hoversel list is selected. event_info is the item
-    * "dismissed" - the hover is dismissed
+    * @li "download,request": A file download has been requested. Event info is
+    * a pointer to a Elm_Web_Download
+    * @li "editorclient,contents,changed": Editor client's contents changed
+    * @li "editorclient,selection,changed": Editor client's selection changed
+    * @li "frame,created": A new frame was created. Event info is an
+    * Evas_Object which can be handled with WebKit's ewk_frame API
+    * @li "icon,received": An icon was received by the main frame
+    * @li "inputmethod,changed": Input method changed. Event info is an
+    * Eina_Bool indicating whether it's enabled or not
+    * @li "js,windowobject,clear": JS window object has been cleared
+    * @li "link,hover,in": Mouse cursor is hovering over a link. Event info
+    * is a char *link[2], where the first string contains the URL the link
+    * points to, and the second one the title of the link
+    * @li "link,hover,out": Mouse cursor left the link
+    * @li "load,document,finished": Loading of a document finished. Event info
+    * is the frame that finished loading
+    * @li "load,error": Load failed. Event info is a pointer to
+    * Elm_Web_Frame_Load_Error
+    * @li "load,finished": Load finished. Event info is NULL on success, on
+    * error it's a pointer to Elm_Web_Frame_Load_Error
+    * @li "load,newwindow,show": A new window was created and is ready to be
+    * shown
+    * @li "load,progress": Overall load progress. Event info is a pointer to
+    * a double containing a value between 0.0 and 1.0
+    * @li "load,provisional": Started provisional load
+    * @li "load,started": Loading of a document started
+    * @li "menubar,visible,get": Queries if the menubar is visible. Event info
+    * is a pointer to Eina_Bool where the callback should set EINA_TRUE if
+    * the menubar is visible, or EINA_FALSE in case it's not
+    * @li "menubar,visible,set": Informs menubar visibility. Event info is
+    * an Eina_Bool indicating the visibility
+    * @li "popup,created": A dropdown widget was activated, requesting its
+    * popup menu to be created. Event info is a pointer to Elm_Web_Menu
+    * @li "popup,willdelete": The web object is ready to destroy the popup
+    * object created. Event info is a pointer to Elm_Web_Menu
+    * @li "ready": Page is fully loaded
+    * @li "scrollbars,visible,get": Queries visibility of scrollbars. Event
+    * info is a pointer to Eina_Bool where the visibility state should be set
+    * @li "scrollbars,visible,set": Informs scrollbars visibility. Event info
+    * is an Eina_Bool with the visibility state set
+    * @li "statusbar,text,set": Text of the statusbar changed. Even info is
+    * a string with the new text
+    * @li "statusbar,visible,get": Queries visibility of the status bar.
+    * Event info is a pointer to Eina_Bool where the visibility state should be
+    * set.
+    * @li "statusbar,visible,set": Informs statusbar visibility. Event info is
+    * an Eina_Bool with the visibility value
+    * @li "title,changed": Title of the main frame changed. Event info is a
+    * string with the new title
+    * @li "toolbars,visible,get": Queries visibility of toolbars. Event info
+    * is a pointer to Eina_Bool where the visibility state should be set
+    * @li "toolbars,visible,set": Informs the visibility of toolbars. Event
+    * info is an Eina_Bool with the visibility state
+    * @li "tooltip,text,set": Show and set text of a tooltip. Event info is
+    * a string with the text to show
+    * @li "uri,changed": URI of the main frame changed. Event info is a string
+    * with the new URI
+    * @li "view,resized": The web object internal's view changed sized
+    * @li "windows,close,request": A JavaScript request to close the current
+    * window was requested
+    * @li "zoom,animated,end": Animated zoom finished
     *
-    * See @ref tutorial_hoversel for an example.
+    * available styles:
+    * - default
+    *
+    * An example of use of web:
+    *
+    * - @ref web_example_01 TBD
+    */
+
+   /**
+    * @addtogroup Web
     * @{
     */
-   typedef struct _Elm_Hoversel_Item Elm_Hoversel_Item; /**< Item of Elm_Hoversel. Sub-type of Elm_Widget_Item */
+
    /**
-    * @brief Add a new Hoversel object
+    * Structure used to report load errors.
     *
-    * @param parent The parent object
-    * @return The new object or NULL if it cannot be created
+    * Load errors are reported as signal by elm_web. All the strings are
+    * temporary references and should @b not be used after the signal
+    * callback returns. If it's required, make copies with strdup() or
+    * eina_stringshare_add() (they are not even guaranteed to be
+    * stringshared, so must use eina_stringshare_add() and not
+    * eina_stringshare_ref()).
     */
-   EAPI Evas_Object       *elm_hoversel_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+   typedef struct _Elm_Web_Frame_Load_Error Elm_Web_Frame_Load_Error;
    /**
-    * @brief This sets the hoversel to expand horizontally.
+    * Structure used to report load errors.
     *
-    * @param obj The hoversel object
-    * @param horizontal If true, the hover will expand horizontally to the
-    * right.
-    *
-    * @note The initial button will display horizontally regardless of this
-    * setting.
+    * Load errors are reported as signal by elm_web. All the strings are
+    * temporary references and should @b not be used after the signal
+    * callback returns. If it's required, make copies with strdup() or
+    * eina_stringshare_add() (they are not even guaranteed to be
+    * stringshared, so must use eina_stringshare_add() and not
+    * eina_stringshare_ref()).
     */
-   EAPI void               elm_hoversel_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
+   struct _Elm_Web_Frame_Load_Error
+     {
+        int code; /**< Numeric error code */
+        Eina_Bool is_cancellation; /**< Error produced by cancelling a request */
+        const char *domain; /**< Error domain name */
+        const char *description; /**< Error description (already localized) */
+        const char *failing_url; /**< The URL that failed to load */
+        Evas_Object *frame; /**< Frame object that produced the error */
+     };
+
    /**
-    * @brief This returns whether the hoversel is set to expand horizontally.
-    *
-    * @param obj The hoversel object
-    * @return If true, the hover will expand horizontally to the right.
-    *
-    * @see elm_hoversel_horizontal_set()
+    * The possibles types that the items in a menu can be
     */
-   EAPI Eina_Bool          elm_hoversel_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   typedef enum _Elm_Web_Menu_Item_Type
+     {
+        ELM_WEB_MENU_SEPARATOR,
+        ELM_WEB_MENU_GROUP,
+        ELM_WEB_MENU_OPTION
+     } Elm_Web_Menu_Item_Type;
+
    /**
-    * @brief Set the Hover parent
+    * Structure describing the items in a menu
+    */
+   typedef struct _Elm_Web_Menu_Item Elm_Web_Menu_Item;
+   /**
+    * Structure describing the items in a menu
+    */
+   struct _Elm_Web_Menu_Item
+     {
+        const char *text; /**< The text for the item */
+        Elm_Web_Menu_Item_Type type; /**< The type of the item */
+     };
+
+   /**
+    * Structure describing the menu of a popup
     *
-    * @param obj The hoversel object
-    * @param parent The parent to use
+    * This structure will be passed as the @c event_info for the "popup,create"
+    * signal, which is emitted when a dropdown menu is opened. Users wanting
+    * to handle these popups by themselves should listen to this signal and
+    * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
+    * property as @c EINA_FALSE means that the user will not handle the popup
+    * and the default implementation will be used.
     *
-    * Sets the hover parent object, the area that will be darkened when the
-    * hoversel is clicked. Should probably be the window that the hoversel is
-    * in. See @ref Hover objects for more information.
+    * When the popup is ready to be dismissed, a "popup,willdelete" signal
+    * will be emitted to notify the user that it can destroy any objects and
+    * free all data related to it.
+    *
+    * @see elm_web_popup_selected_set()
+    * @see elm_web_popup_destroy()
     */
-   EAPI void               elm_hoversel_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
+   typedef struct _Elm_Web_Menu Elm_Web_Menu;
    /**
-    * @brief Get the Hover parent
+    * Structure describing the menu of a popup
     *
-    * @param obj The hoversel object
-    * @return The used parent
+    * This structure will be passed as the @c event_info for the "popup,create"
+    * signal, which is emitted when a dropdown menu is opened. Users wanting
+    * to handle these popups by themselves should listen to this signal and
+    * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
+    * property as @c EINA_FALSE means that the user will not handle the popup
+    * and the default implementation will be used.
     *
-    * Gets the hover parent object.
+    * When the popup is ready to be dismissed, a "popup,willdelete" signal
+    * will be emitted to notify the user that it can destroy any objects and
+    * free all data related to it.
     *
-    * @see elm_hoversel_hover_parent_set()
+    * @see elm_web_popup_selected_set()
+    * @see elm_web_popup_destroy()
     */
-   EAPI Evas_Object       *elm_hoversel_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   struct _Elm_Web_Menu
+     {
+        Eina_List *items; /**< List of #Elm_Web_Menu_Item */
+        int x; /**< The X position of the popup, relative to the elm_web object */
+        int y; /**< The Y position of the popup, relative to the elm_web object */
+        int width; /**< Width of the popup menu */
+        int height; /**< Height of the popup menu */
+
+        Eina_Bool handled : 1; /**< Set to @c EINA_TRUE by the user to indicate that the popup has been handled and the default implementation should be ignored. Leave as @c EINA_FALSE otherwise. */
+     };
+
+   typedef struct _Elm_Web_Download Elm_Web_Download;
+   struct _Elm_Web_Download
+     {
+        const char *url;
+     };
+
    /**
-    * @brief Set the hoversel button label
+    * Types of zoom available.
+    */
+   typedef enum _Elm_Web_Zoom_Mode
+     {
+        ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controled normally by elm_web_zoom_set */
+        ELM_WEB_ZOOM_MODE_AUTO_FIT, /**< Zoom until content fits in web object */
+        ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until content fills web object */
+        ELM_WEB_ZOOM_MODE_LAST
+     } Elm_Web_Zoom_Mode;
+   /**
+    * Opaque handler containing the features (such as statusbar, menubar, etc)
+    * that are to be set on a newly requested window.
+    */
+   typedef struct _Elm_Web_Window_Features Elm_Web_Window_Features;
+   /**
+    * Callback type for the create_window hook.
+    *
+    * The function parameters are:
+    * @li @p data User data pointer set when setting the hook function
+    * @li @p obj The elm_web object requesting the new window
+    * @li @p js Set to @c EINA_TRUE if the request was originated from
+    * JavaScript. @c EINA_FALSE otherwise.
+    * @li @p window_features A pointer of #Elm_Web_Window_Features indicating
+    * the features requested for the new window.
+    *
+    * The returned value of the function should be the @c elm_web widget where
+    * the request will be loaded. That is, if a new window or tab is created,
+    * the elm_web widget in it should be returned, and @b NOT the window
+    * object.
+    * Returning @c NULL should cancel the request.
     *
-    * @param obj The hoversel object
-    * @param label The label text.
+    * @see elm_web_window_create_hook_set()
+    */
+   typedef Evas_Object *(*Elm_Web_Window_Open)(void *data, Evas_Object *obj, Eina_Bool js, const Elm_Web_Window_Features *window_features);
+   /**
+    * Callback type for the JS alert hook.
     *
-    * This sets the label of the button that is always visible (before it is
-    * clicked and expanded).
+    * The function parameters are:
+    * @li @p data User data pointer set when setting the hook function
+    * @li @p obj The elm_web object requesting the new window
+    * @li @p message The message to show in the alert dialog
     *
-    * @deprecated elm_object_text_set()
+    * The function should return the object representing the alert dialog.
+    * Elm_Web will run a second main loop to handle the dialog and normal
+    * flow of the application will be restored when the object is deleted, so
+    * the user should handle the popup properly in order to delete the object
+    * when the action is finished.
+    * If the function returns @c NULL the popup will be ignored.
+    *
+    * @see elm_web_dialog_alert_hook_set()
     */
-   EINA_DEPRECATED EAPI void               elm_hoversel_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   typedef Evas_Object *(*Elm_Web_Dialog_Alert)(void *data, Evas_Object *obj, const char *message);
    /**
-    * @brief Get the hoversel button label
+    * Callback type for the JS confirm hook.
     *
-    * @param obj The hoversel object
-    * @return The label text.
+    * The function parameters are:
+    * @li @p data User data pointer set when setting the hook function
+    * @li @p obj The elm_web object requesting the new window
+    * @li @p message The message to show in the confirm dialog
+    * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
+    * the user selected @c Ok, @c EINA_FALSE otherwise.
     *
-    * @deprecated elm_object_text_get()
+    * The function should return the object representing the confirm dialog.
+    * Elm_Web will run a second main loop to handle the dialog and normal
+    * flow of the application will be restored when the object is deleted, so
+    * the user should handle the popup properly in order to delete the object
+    * when the action is finished.
+    * If the function returns @c NULL the popup will be ignored.
+    *
+    * @see elm_web_dialog_confirm_hook_set()
     */
-   EINA_DEPRECATED EAPI const char        *elm_hoversel_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   typedef Evas_Object *(*Elm_Web_Dialog_Confirm)(void *data, Evas_Object *obj, const char *message, Eina_Bool *ret);
    /**
-    * @brief Set the icon of the hoversel button
+    * Callback type for the JS prompt hook.
     *
-    * @param obj The hoversel object
-    * @param icon The icon object
+    * The function parameters are:
+    * @li @p data User data pointer set when setting the hook function
+    * @li @p obj The elm_web object requesting the new window
+    * @li @p message The message to show in the prompt dialog
+    * @li @p def_value The default value to present the user in the entry
+    * @li @p value Pointer where to store the value given by the user. Must
+    * be a malloc'ed string or @c NULL if the user cancelled the popup.
+    * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
+    * the user selected @c Ok, @c EINA_FALSE otherwise.
     *
-    * Sets the icon of the button that is always visible (before it is clicked
-    * and expanded).  Once the icon object is set, a previously set one will be
-    * deleted, if you want to keep that old content object, use the
-    * elm_hoversel_icon_unset() function.
+    * The function should return the object representing the prompt dialog.
+    * Elm_Web will run a second main loop to handle the dialog and normal
+    * flow of the application will be restored when the object is deleted, so
+    * the user should handle the popup properly in order to delete the object
+    * when the action is finished.
+    * If the function returns @c NULL the popup will be ignored.
     *
-    * @see elm_button_icon_set()
+    * @see elm_web_dialog_prompt_hook_set()
     */
-   EAPI void               elm_hoversel_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   typedef Evas_Object *(*Elm_Web_Dialog_Prompt)(void *data, Evas_Object *obj, const char *message, const char *def_value, char **value, Eina_Bool *ret);
    /**
-    * @brief Get the icon of the hoversel button
+    * Callback type for the JS file selector hook.
     *
-    * @param obj The hoversel object
-    * @return The icon object
+    * The function parameters are:
+    * @li @p data User data pointer set when setting the hook function
+    * @li @p obj The elm_web object requesting the new window
+    * @li @p allows_multiple @c EINA_TRUE if multiple files can be selected.
+    * @li @p accept_types Mime types accepted
+    * @li @p selected Pointer where to store the list of malloc'ed strings
+    * containing the path to each file selected. Must be @c NULL if the file
+    * dialog is cancelled
+    * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
+    * the user selected @c Ok, @c EINA_FALSE otherwise.
     *
-    * Get the icon of the button that is always visible (before it is clicked
-    * and expanded). Also see elm_button_icon_get().
+    * The function should return the object representing the file selector
+    * dialog.
+    * Elm_Web will run a second main loop to handle the dialog and normal
+    * flow of the application will be restored when the object is deleted, so
+    * the user should handle the popup properly in order to delete the object
+    * when the action is finished.
+    * If the function returns @c NULL the popup will be ignored.
     *
-    * @see elm_hoversel_icon_set()
+    * @see elm_web_dialog_file selector_hook_set()
     */
-   EAPI Evas_Object       *elm_hoversel_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   typedef Evas_Object *(*Elm_Web_Dialog_File_Selector)(void *data, Evas_Object *obj, Eina_Bool allows_multiple, const char *accept_types, Eina_List **selected, Eina_Bool *ret);
    /**
-    * @brief Get and unparent the icon of the hoversel button
+    * Callback type for the JS console message hook.
     *
-    * @param obj The hoversel object
-    * @return The icon object that was being used
+    * When a console message is added from JavaScript, any set function to the
+    * console message hook will be called for the user to handle. There is no
+    * default implementation of this hook.
     *
-    * Unparent and return the icon of the button that is always visible
-    * (before it is clicked and expanded).
+    * The function parameters are:
+    * @li @p data User data pointer set when setting the hook function
+    * @li @p obj The elm_web object that originated the message
+    * @li @p message The message sent
+    * @li @p line_number The line number
+    * @li @p source_id Source id
     *
-    * @see elm_hoversel_icon_set()
-    * @see elm_button_icon_unset()
+    * @see elm_web_console_message_hook_set()
     */
-   EAPI Evas_Object       *elm_hoversel_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   typedef void (*Elm_Web_Console_Message)(void *data, Evas_Object *obj, const char *message, unsigned int line_number, const char *source_id);
    /**
-    * @brief This triggers the hoversel popup from code, the same as if the user
-    * had clicked the button.
+    * Add a new web object to the parent.
     *
-    * @param obj The hoversel object
+    * @param parent The parent object.
+    * @return The new object or NULL if it cannot be created.
+    *
+    * @see elm_web_uri_set()
+    * @see elm_web_webkit_view_get()
     */
-   EAPI void               elm_hoversel_hover_begin(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object                 *elm_web_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
    /**
-    * @brief This dismisses the hoversel popup as if the user had clicked
-    * outside the hover.
+    * Get internal ewk_view object from web object.
     *
-    * @param obj The hoversel object
+    * Elementary may not provide some low level features of EWebKit,
+    * instead of cluttering the API with proxy methods we opted to
+    * return the internal reference. Be careful using it as it may
+    * interfere with elm_web behavior.
+    *
+    * @param obj The web object.
+    * @return The internal ewk_view object or NULL if it does not
+    *         exist. (Failure to create or Elementary compiled without
+    *         ewebkit)
+    *
+    * @see elm_web_add()
     */
-   EAPI void               elm_hoversel_hover_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object                 *elm_web_webkit_view_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
    /**
-    * @brief Returns whether the hoversel is expanded.
+    * Sets the function to call when a new window is requested
     *
-    * @param obj The hoversel object
-    * @return  This will return EINA_TRUE if the hoversel is expanded or
-    * EINA_FALSE if it is not expanded.
+    * This hook will be called when a request to create a new window is
+    * issued from the web page loaded.
+    * There is no default implementation for this feature, so leaving this
+    * unset or passing @c NULL in @p func will prevent new windows from
+    * opening.
+    *
+    * @param obj The web object where to set the hook function
+    * @param func The hook function to be called when a window is requested
+    * @param data User data
     */
-   EAPI Eina_Bool          elm_hoversel_expanded_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                         elm_web_window_create_hook_set(Evas_Object *obj, Elm_Web_Window_Open func, void *data);
    /**
-    * @brief This will remove all the children items from the hoversel.
+    * Sets the function to call when an alert dialog
     *
-    * @param obj The hoversel object
+    * This hook will be called when a JavaScript alert dialog is requested.
+    * If no function is set or @c NULL is passed in @p func, the default
+    * implementation will take place.
     *
-    * @warning Should @b not be called while the hoversel is active; use
-    * elm_hoversel_expanded_get() to check first.
+    * @param obj The web object where to set the hook function
+    * @param func The callback function to be used
+    * @param data User data
     *
-    * @see elm_hoversel_item_del_cb_set()
-    * @see elm_hoversel_item_del()
+    * @see elm_web_inwin_mode_set()
     */
-   EAPI void               elm_hoversel_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                         elm_web_dialog_alert_hook_set(Evas_Object *obj, Elm_Web_Dialog_Alert func, void *data);
    /**
-    * @brief Get the list of items within the given hoversel.
+    * Sets the function to call when an confirm dialog
     *
-    * @param obj The hoversel object
-    * @return Returns a list of Elm_Hoversel_Item*
+    * This hook will be called when a JavaScript confirm dialog is requested.
+    * If no function is set or @c NULL is passed in @p func, the default
+    * implementation will take place.
     *
-    * @see elm_hoversel_item_add()
+    * @param obj The web object where to set the hook function
+    * @param func The callback function to be used
+    * @param data User data
+    *
+    * @see elm_web_inwin_mode_set()
     */
-   EAPI const Eina_List   *elm_hoversel_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                         elm_web_dialog_confirm_hook_set(Evas_Object *obj, Elm_Web_Dialog_Confirm func, void *data);
    /**
-    * @brief Add an item to the hoversel button
+    * Sets the function to call when an prompt dialog
     *
-    * @param obj The hoversel object
-    * @param label The text label to use for the item (NULL if not desired)
-    * @param icon_file An image file path on disk to use for the icon or standard
-    * icon name (NULL if not desired)
-    * @param icon_type The icon type if relevant
-    * @param func Convenience function to call when this item is selected
-    * @param data Data to pass to item-related functions
-    * @return A handle to the item added.
+    * This hook will be called when a JavaScript prompt dialog is requested.
+    * If no function is set or @c NULL is passed in @p func, the default
+    * implementation will take place.
     *
-    * This adds an item to the hoversel to show when it is clicked. Note: if you
-    * need to use an icon from an edje file then use
-    * elm_hoversel_item_icon_set() right after the this function, and set
-    * icon_file to NULL here.
+    * @param obj The web object where to set the hook function
+    * @param func The callback function to be used
+    * @param data User data
     *
-    * For more information on what @p icon_file and @p icon_type are see the
-    * @ref Icon "icon documentation".
+    * @see elm_web_inwin_mode_set()
     */
-   EAPI Elm_Hoversel_Item *elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+   EAPI void                         elm_web_dialog_prompt_hook_set(Evas_Object *obj, Elm_Web_Dialog_Prompt func, void *data);
    /**
-    * @brief Delete an item from the hoversel
+    * Sets the function to call when an file selector dialog
     *
-    * @param item The item to delete
+    * This hook will be called when a JavaScript file selector dialog is
+    * requested.
+    * If no function is set or @c NULL is passed in @p func, the default
+    * implementation will take place.
     *
-    * This deletes the item from the hoversel (should not be called while the
-    * hoversel is active; use elm_hoversel_expanded_get() to check first).
+    * @param obj The web object where to set the hook function
+    * @param func The callback function to be used
+    * @param data User data
+    *
+    * @see elm_web_inwin_mode_set()
+    */
+   EAPI void                         elm_web_dialog_file_selector_hook_set(Evas_Object *obj, Elm_Web_Dialog_File_Selector func, void *data);
+   /**
+    * Sets the function to call when a console message is emitted from JS
+    *
+    * This hook will be called when a console message is emitted from
+    * JavaScript. There is no default implementation for this feature.
+    *
+    * @param obj The web object where to set the hook function
+    * @param func The callback function to be used
+    * @param data User data
+    */
+   EAPI void                         elm_web_console_message_hook_set(Evas_Object *obj, Elm_Web_Console_Message func, void *data);
+   /**
+    * Gets the status of the tab propagation
+    *
+    * @param obj The web object to query
+    * @return EINA_TRUE if tab propagation is enabled, EINA_FALSE otherwise
+    *
+    * @see elm_web_tab_propagate_set()
+    */
+   EAPI Eina_Bool                    elm_web_tab_propagate_get(const Evas_Object *obj);
+   /**
+    * Sets whether to use tab propagation
+    *
+    * If tab propagation is enabled, whenever the user presses the Tab key,
+    * Elementary will handle it and switch focus to the next widget.
+    * The default value is disabled, where WebKit will handle the Tab key to
+    * cycle focus though its internal objects, jumping to the next widget
+    * only when that cycle ends.
+    *
+    * @param obj The web object
+    * @param propagate Whether to propagate Tab keys to Elementary or not
+    */
+   EAPI void                         elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate);
+   /**
+    * Sets the URI for the web object
+    *
+    * It must be a full URI, with resource included, in the form
+    * http://www.enlightenment.org or file:///tmp/something.html
+    *
+    * @param obj The web object
+    * @param uri The URI to set
+    * @return EINA_TRUE if the URI could be, EINA_FALSE if an error occurred
+    */
+   EAPI Eina_Bool                    elm_web_uri_set(Evas_Object *obj, const char *uri);
+   /**
+    * Gets the current URI for the object
+    *
+    * The returned string must not be freed and is guaranteed to be
+    * stringshared.
+    *
+    * @param obj The web object
+    * @return A stringshared internal string with the current URI, or NULL on
+    * failure
+    */
+   EAPI const char                  *elm_web_uri_get(const Evas_Object *obj);
+   /**
+    * Gets the current title
+    *
+    * The returned string must not be freed and is guaranteed to be
+    * stringshared.
+    *
+    * @param obj The web object
+    * @return A stringshared internal string with the current title, or NULL on
+    * failure
+    */
+   EAPI const char                  *elm_web_title_get(const Evas_Object *obj);
+   /**
+    * Sets the background color to be used by the web object
+    *
+    * This is the color that will be used by default when the loaded page
+    * does not set it's own. Color values are pre-multiplied.
+    *
+    * @param obj The web object
+    * @param r Red component
+    * @param g Green component
+    * @param b Blue component
+    * @param a Alpha component
+    */
+   EAPI void                         elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a);
+   /**
+    * Gets the background color to be used by the web object
+    *
+    * This is the color that will be used by default when the loaded page
+    * does not set it's own. Color values are pre-multiplied.
+    *
+    * @param obj The web object
+    * @param r Red component
+    * @param g Green component
+    * @param b Blue component
+    * @param a Alpha component
+    */
+   EAPI void                         elm_web_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
+   /**
+    * Gets a copy of the currently selected text
+    *
+    * The string returned must be freed by the user when it's done with it.
+    *
+    * @param obj The web object
+    * @return A newly allocated string, or NULL if nothing is selected or an
+    * error occurred
+    */
+   EAPI char                        *elm_view_selection_get(const Evas_Object *obj);
+   /**
+    * Tells the web object which index in the currently open popup was selected
+    *
+    * When the user handles the popup creation from the "popup,created" signal,
+    * it needs to tell the web object which item was selected by calling this
+    * function with the index corresponding to the item.
+    *
+    * @param obj The web object
+    * @param index The index selected
+    *
+    * @see elm_web_popup_destroy()
+    */
+   EAPI void                         elm_web_popup_selected_set(Evas_Object *obj, int index);
+   /**
+    * Dismisses an open dropdown popup
+    *
+    * When the popup from a dropdown widget is to be dismissed, either after
+    * selecting an option or to cancel it, this function must be called, which
+    * will later emit an "popup,willdelete" signal to notify the user that
+    * any memory and objects related to this popup can be freed.
+    *
+    * @param obj The web object
+    * @return EINA_TRUE if the menu was successfully destroyed, or EINA_FALSE
+    * if there was no menu to destroy
+    */
+   EAPI Eina_Bool                    elm_web_popup_destroy(Evas_Object *obj);
+   /**
+    * Searches the given string in a document.
+    *
+    * @param obj The web object where to search the text
+    * @param string String to search
+    * @param case_sensitive If search should be case sensitive or not
+    * @param forward If search is from cursor and on or backwards
+    * @param wrap If search should wrap at the end
+    *
+    * @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not
+    * or failure
+    */
+   EAPI Eina_Bool                    elm_web_text_search(const Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
+   /**
+    * Marks matches of the given string in a document.
+    *
+    * @param obj The web object where to search text
+    * @param string String to match
+    * @param case_sensitive If match should be case sensitive or not
+    * @param highlight If matches should be highlighted
+    * @param limit Maximum amount of matches, or zero to unlimited
+    *
+    * @return number of matched @a string
+    */
+   EAPI unsigned int                 elm_web_text_matches_mark(Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
+   /**
+    * Clears all marked matches in the document
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE on success, EINA_FALSE otherwise
+    */
+   EAPI Eina_Bool                    elm_web_text_matches_unmark_all(Evas_Object *obj);
+   /**
+    * Sets whether to highlight the matched marks
+    *
+    * If enabled, marks set with elm_web_text_matches_mark() will be
+    * highlighted.
+    *
+    * @param obj The web object
+    * @param highlight Whether to highlight the marks or not
+    *
+    * @return EINA_TRUE on success, EINA_FALSE otherwise
+    */
+   EAPI Eina_Bool                    elm_web_text_matches_highlight_set(Evas_Object *obj, Eina_Bool highlight);
+   /**
+    * Gets whether highlighting marks is enabled
+    *
+    * @param The web object
+    *
+    * @return EINA_TRUE is marks are set to be highlighted, EINA_FALSE
+    * otherwise
+    */
+   EAPI Eina_Bool                    elm_web_text_matches_highlight_get(const Evas_Object *obj);
+   /**
+    * Gets the overall loading progress of the page
+    *
+    * Returns the estimated loading progress of the page, with a value between
+    * 0.0 and 1.0. This is an estimated progress accounting for all the frames
+    * included in the page.
+    *
+    * @param The web object
+    *
+    * @return A value between 0.0 and 1.0 indicating the progress, or -1.0 on
+    * failure
+    */
+   EAPI double                       elm_web_load_progress_get(const Evas_Object *obj);
+   /**
+    * Stops loading the current page
+    *
+    * Cancels the loading of the current page in the web object. This will
+    * cause a "load,error" signal to be emitted, with the is_cancellation
+    * flag set to EINA_TRUE.
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE if the cancel was successful, EINA_FALSE otherwise
+    */
+   EAPI Eina_Bool                    elm_web_stop(Evas_Object *obj);
+   /**
+    * Requests a reload of the current document in the object
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE on success, EINA_FALSE otherwise
+    */
+   EAPI Eina_Bool                    elm_web_reload(Evas_Object *obj);
+   /**
+    * Requests a reload of the current document, avoiding any existing caches
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE on success, EINA_FALSE otherwise
+    */
+   EAPI Eina_Bool                    elm_web_reload_full(Evas_Object *obj);
+   /**
+    * Goes back one step in the browsing history
+    *
+    * This is equivalent to calling elm_web_object_navigate(obj, -1);
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE on success, EINA_FALSE otherwise
+    *
+    * @see elm_web_history_enable_set()
+    * @see elm_web_back_possible()
+    * @see elm_web_forward()
+    * @see elm_web_navigate()
+    */
+   EAPI Eina_Bool                    elm_web_back(Evas_Object *obj);
+   /**
+    * Goes forward one step in the browsing history
+    *
+    * This is equivalent to calling elm_web_object_navigate(obj, 1);
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE on success, EINA_FALSE otherwise
+    *
+    * @see elm_web_history_enable_set()
+    * @see elm_web_forward_possible()
+    * @see elm_web_back()
+    * @see elm_web_navigate()
+    */
+   EAPI Eina_Bool                    elm_web_forward(Evas_Object *obj);
+   /**
+    * Jumps the given number of steps in the browsing history
+    *
+    * The @p steps value can be a negative integer to back in history, or a
+    * positive to move forward.
+    *
+    * @param obj The web object
+    * @param steps The number of steps to jump
+    *
+    * @return EINA_TRUE on success, EINA_FALSE on error or if not enough
+    * history exists to jump the given number of steps
+    *
+    * @see elm_web_history_enable_set()
+    * @see elm_web_navigate_possible()
+    * @see elm_web_back()
+    * @see elm_web_forward()
+    */
+   EAPI Eina_Bool                    elm_web_navigate(Evas_Object *obj, int steps);
+   /**
+    * Queries whether it's possible to go back in history
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE if it's possible to back in history, EINA_FALSE
+    * otherwise
+    */
+   EAPI Eina_Bool                    elm_web_back_possible(Evas_Object *obj);
+   /**
+    * Queries whether it's possible to go forward in history
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE if it's possible to forward in history, EINA_FALSE
+    * otherwise
+    */
+   EAPI Eina_Bool                    elm_web_forward_possible(Evas_Object *obj);
+   /**
+    * Queries whether it's possible to jump the given number of steps
+    *
+    * The @p steps value can be a negative integer to back in history, or a
+    * positive to move forward.
+    *
+    * @param obj The web object
+    * @param steps The number of steps to check for
+    *
+    * @return EINA_TRUE if enough history exists to perform the given jump,
+    * EINA_FALSE otherwise
+    */
+   EAPI Eina_Bool                    elm_web_navigate_possible(Evas_Object *obj, int steps);
+   /**
+    * Gets whether browsing history is enabled for the given object
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE if history is enabled, EINA_FALSE otherwise
+    */
+   EAPI Eina_Bool                    elm_web_history_enable_get(const Evas_Object *obj);
+   /**
+    * Enables or disables the browsing history
+    *
+    * @param obj The web object
+    * @param enable Whether to enable or disable the browsing history
+    */
+   EAPI void                         elm_web_history_enable_set(Evas_Object *obj, Eina_Bool enable);
+   /**
+    * Sets the zoom level of the web object
+    *
+    * Zoom level matches the Webkit API, so 1.0 means normal zoom, with higher
+    * values meaning zoom in and lower meaning zoom out. This function will
+    * only affect the zoom level if the mode set with elm_web_zoom_mode_set()
+    * is ::ELM_WEB_ZOOM_MODE_MANUAL.
+    *
+    * @param obj The web object
+    * @param zoom The zoom level to set
+    */
+   EAPI void                         elm_web_zoom_set(Evas_Object *obj, double zoom);
+   /**
+    * Gets the current zoom level set on the web object
+    *
+    * Note that this is the zoom level set on the web object and not that
+    * of the underlying Webkit one. In the ::ELM_WEB_ZOOM_MODE_MANUAL mode,
+    * the two zoom levels should match, but for the other two modes the
+    * Webkit zoom is calculated internally to match the chosen mode without
+    * changing the zoom level set for the web object.
+    *
+    * @param obj The web object
+    *
+    * @return The zoom level set on the object
+    */
+   EAPI double                       elm_web_zoom_get(const Evas_Object *obj);
+   /**
+    * Sets the zoom mode to use
+    *
+    * The modes can be any of those defined in ::Elm_Web_Zoom_Mode, except
+    * ::ELM_WEB_ZOOM_MODE_LAST. The default is ::ELM_WEB_ZOOM_MODE_MANUAL.
+    *
+    * ::ELM_WEB_ZOOM_MODE_MANUAL means the zoom level will be controlled
+    * with the elm_web_zoom_set() function.
+    * ::ELM_WEB_ZOOM_MODE_AUTO_FIT will calculate the needed zoom level to
+    * make sure the entirety of the web object's contents are shown.
+    * ::ELM_WEB_ZOOM_MODE_AUTO_FILL will calculate the needed zoom level to
+    * fit the contents in the web object's size, without leaving any space
+    * unused.
+    *
+    * @param obj The web object
+    * @param mode The mode to set
+    */
+   EAPI void                         elm_web_zoom_mode_set(Evas_Object *obj, Elm_Web_Zoom_Mode mode);
+   /**
+    * Gets the currently set zoom mode
+    *
+    * @param obj The web object
+    *
+    * @return The current zoom mode set for the object, or
+    * ::ELM_WEB_ZOOM_MODE_LAST on error
+    */
+   EAPI Elm_Web_Zoom_Mode            elm_web_zoom_mode_get(const Evas_Object *obj);
+   /**
+    * Shows the given region in the web object
+    *
+    * @param obj The web object
+    * @param x The x coordinate of the region to show
+    * @param y The y coordinate of the region to show
+    * @param w The width of the region to show
+    * @param h The height of the region to show
+    */
+   EAPI void                         elm_web_region_show(Evas_Object *obj, int x, int y, int w, int h);
+   /**
+    * Brings in the region to the visible area
+    *
+    * Like elm_web_region_show(), but it animates the scrolling of the object
+    * to show the area
+    *
+    * @param obj The web object
+    * @param x The x coordinate of the region to show
+    * @param y The y coordinate of the region to show
+    * @param w The width of the region to show
+    * @param h The height of the region to show
+    */
+   EAPI void                         elm_web_region_bring_in(Evas_Object *obj, int x, int y, int w, int h);
+   /**
+    * Sets the default dialogs to use an Inwin instead of a normal window
+    *
+    * If set, then the default implementation for the JavaScript dialogs and
+    * file selector will be opened in an Inwin. Otherwise they will use a
+    * normal separated window.
+    *
+    * @param obj The web object
+    * @param value EINA_TRUE to use Inwin, EINA_FALSE to use a normal window
+    */
+   EAPI void                         elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value);
+   /**
+    * Gets whether Inwin mode is set for the current object
+    *
+    * @param obj The web object
+    *
+    * @return EINA_TRUE if Inwin mode is set, EINA_FALSE otherwise
+    */
+   EAPI Eina_Bool                    elm_web_inwin_mode_get(const Evas_Object *obj);
+
+   EAPI void                         elm_web_window_features_ref(Elm_Web_Window_Features *wf);
+   EAPI void                         elm_web_window_features_unref(Elm_Web_Window_Features *wf);
+   EAPI void                         elm_web_window_features_bool_property_get(const Elm_Web_Window_Features *wf, Eina_Bool *toolbar_visible, Eina_Bool *statusbar_visible, Eina_Bool *scrollbars_visible, Eina_Bool *menubar_visible, Eina_Bool *locationbar_visble, Eina_Bool *fullscreen);
+   EAPI void                         elm_web_window_features_int_property_get(const Elm_Web_Window_Features *wf, int *x, int *y, int *w, int *h);
+
+   /**
+    * @}
+    */
+
+   /**
+    * @defgroup Hoversel Hoversel
+    *
+    * @image html img/widget/hoversel/preview-00.png
+    * @image latex img/widget/hoversel/preview-00.eps
+    *
+    * A hoversel is a button that pops up a list of items (automatically
+    * choosing the direction to display) that have a label and, optionally, an
+    * icon to select from. It is a convenience widget to avoid the need to do
+    * all the piecing together yourself. It is intended for a small number of
+    * items in the hoversel menu (no more than 8), though is capable of many
+    * more.
+    *
+    * Signals that you can add callbacks for are:
+    * "clicked" - the user clicked the hoversel button and popped up the sel
+    * "selected" - an item in the hoversel list is selected. event_info is the item
+    * "dismissed" - the hover is dismissed
+    *
+    * See @ref tutorial_hoversel for an example.
+    * @{
+    */
+   typedef struct _Elm_Hoversel_Item Elm_Hoversel_Item; /**< Item of Elm_Hoversel. Sub-type of Elm_Widget_Item */
+   /**
+    * @brief Add a new Hoversel object
+    *
+    * @param parent The parent object
+    * @return The new object or NULL if it cannot be created
+    */
+   EAPI Evas_Object       *elm_hoversel_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+   /**
+    * @brief This sets the hoversel to expand horizontally.
+    *
+    * @param obj The hoversel object
+    * @param horizontal If true, the hover will expand horizontally to the
+    * right.
+    *
+    * @note The initial button will display horizontally regardless of this
+    * setting.
+    */
+   EAPI void               elm_hoversel_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
+   /**
+    * @brief This returns whether the hoversel is set to expand horizontally.
+    *
+    * @param obj The hoversel object
+    * @return If true, the hover will expand horizontally to the right.
+    *
+    * @see elm_hoversel_horizontal_set()
+    */
+   EAPI Eina_Bool          elm_hoversel_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set the Hover parent
+    *
+    * @param obj The hoversel object
+    * @param parent The parent to use
+    *
+    * Sets the hover parent object, the area that will be darkened when the
+    * hoversel is clicked. Should probably be the window that the hoversel is
+    * in. See @ref Hover objects for more information.
+    */
+   EAPI void               elm_hoversel_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the Hover parent
+    *
+    * @param obj The hoversel object
+    * @return The used parent
+    *
+    * Gets the hover parent object.
+    *
+    * @see elm_hoversel_hover_parent_set()
+    */
+   EAPI Evas_Object       *elm_hoversel_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set the hoversel button label
+    *
+    * @param obj The hoversel object
+    * @param label The label text.
+    *
+    * This sets the label of the button that is always visible (before it is
+    * clicked and expanded).
+    *
+    * @deprecated elm_object_text_set()
+    */
+   EINA_DEPRECATED EAPI void               elm_hoversel_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the hoversel button label
+    *
+    * @param obj The hoversel object
+    * @return The label text.
+    *
+    * @deprecated elm_object_text_get()
+    */
+   EINA_DEPRECATED EAPI const char        *elm_hoversel_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set the icon of the hoversel button
+    *
+    * @param obj The hoversel object
+    * @param icon The icon object
+    *
+    * Sets the icon of the button that is always visible (before it is clicked
+    * and expanded).  Once the icon object is set, a previously set one will be
+    * deleted, if you want to keep that old content object, use the
+    * elm_hoversel_icon_unset() function.
+    *
+    * @see elm_button_icon_set()
+    */
+   EAPI void               elm_hoversel_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the icon of the hoversel button
+    *
+    * @param obj The hoversel object
+    * @return The icon object
+    *
+    * Get the icon of the button that is always visible (before it is clicked
+    * and expanded). Also see elm_button_icon_get().
+    *
+    * @see elm_hoversel_icon_set()
+    */
+   EAPI Evas_Object       *elm_hoversel_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get and unparent the icon of the hoversel button
+    *
+    * @param obj The hoversel object
+    * @return The icon object that was being used
+    *
+    * Unparent and return the icon of the button that is always visible
+    * (before it is clicked and expanded).
+    *
+    * @see elm_hoversel_icon_set()
+    * @see elm_button_icon_unset()
+    */
+   EAPI Evas_Object       *elm_hoversel_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief This triggers the hoversel popup from code, the same as if the user
+    * had clicked the button.
+    *
+    * @param obj The hoversel object
+    */
+   EAPI void               elm_hoversel_hover_begin(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief This dismisses the hoversel popup as if the user had clicked
+    * outside the hover.
+    *
+    * @param obj The hoversel object
+    */
+   EAPI void               elm_hoversel_hover_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Returns whether the hoversel is expanded.
+    *
+    * @param obj The hoversel object
+    * @return  This will return EINA_TRUE if the hoversel is expanded or
+    * EINA_FALSE if it is not expanded.
+    */
+   EAPI Eina_Bool          elm_hoversel_expanded_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief This will remove all the children items from the hoversel.
+    *
+    * @param obj The hoversel object
+    *
+    * @warning Should @b not be called while the hoversel is active; use
+    * elm_hoversel_expanded_get() to check first.
+    *
+    * @see elm_hoversel_item_del_cb_set()
+    * @see elm_hoversel_item_del()
+    */
+   EAPI void               elm_hoversel_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the list of items within the given hoversel.
+    *
+    * @param obj The hoversel object
+    * @return Returns a list of Elm_Hoversel_Item*
+    *
+    * @see elm_hoversel_item_add()
+    */
+   EAPI const Eina_List   *elm_hoversel_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Add an item to the hoversel button
+    *
+    * @param obj The hoversel object
+    * @param label The text label to use for the item (NULL if not desired)
+    * @param icon_file An image file path on disk to use for the icon or standard
+    * icon name (NULL if not desired)
+    * @param icon_type The icon type if relevant
+    * @param func Convenience function to call when this item is selected
+    * @param data Data to pass to item-related functions
+    * @return A handle to the item added.
+    *
+    * This adds an item to the hoversel to show when it is clicked. Note: if you
+    * need to use an icon from an edje file then use
+    * elm_hoversel_item_icon_set() right after the this function, and set
+    * icon_file to NULL here.
+    *
+    * For more information on what @p icon_file and @p icon_type are see the
+    * @ref Icon "icon documentation".
+    */
+   EAPI Elm_Hoversel_Item *elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Delete an item from the hoversel
+    *
+    * @param item The item to delete
+    *
+    * This deletes the item from the hoversel (should not be called while the
+    * hoversel is active; use elm_hoversel_expanded_get() to check first).
     *
     * @see elm_hoversel_item_add()
     * @see elm_hoversel_item_del_cb_set()
@@ -12733,6 +14267,38 @@ extern "C" {
    EAPI Elm_Icon_Lookup_Order   elm_toolbar_icon_order_lookup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
+    * Set whether the toolbar should always have an item selected.
+    *
+    * @param obj The toolbar object.
+    * @param wrap @c EINA_TRUE to enable always-select mode or @c EINA_FALSE to
+    * disable it.
+    *
+    * This will cause the toolbar to always have an item selected, and clicking
+    * the selected item will not cause a selected event to be emitted. Enabling this mode
+    * will immediately select the first toolbar item.
+    *
+    * Always-selected is disabled by default.
+    *
+    * @see elm_toolbar_always_select_mode_get().
+    *
+    * @ingroup Toolbar
+    */
+   EAPI void                    elm_toolbar_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get whether the toolbar should always have an item selected.
+    *
+    * @param obj The toolbar object.
+    * @return @c EINA_TRUE means an item will always be selected, @c EINA_FALSE indicates
+    * that it is possible to have no items selected. If @p obj is @c NULL, @c EINA_FALSE is returned.
+    *
+    * @see elm_toolbar_always_select_mode_set() for details.
+    *
+    * @ingroup Toolbar
+    */
+   EAPI Eina_Bool               elm_toolbar_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
     * Set whether the toolbar items' should be selected by the user or not.
     *
     * @param obj The toolbar object.
@@ -13174,6 +14740,46 @@ extern "C" {
    EAPI const char             *elm_toolbar_item_icon_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
 
    /**
+    * Get the object of @p item.
+    *
+    * @param item The toolbar item.
+    * @return The object
+    *
+    * @ingroup Toolbar
+    */
+   EAPI Evas_Object            *elm_toolbar_item_object_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the icon object of @p item.
+    *
+    * @param item The toolbar item.
+    * @return The icon object
+    *
+    * @see elm_toolbar_item_icon_set() or elm_toolbar_item_icon_memfile_set() for details.
+    *
+    * @ingroup Toolbar
+    */
+   EAPI Evas_Object            *elm_toolbar_item_icon_object_get(Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the icon associated with @p item to an image in a binary buffer.
+    *
+    * @param item The toolbar item.
+    * @param img The binary data that will be used as an image
+    * @param size The size of binary data @p img
+    * @param format Optional format of @p img to pass to the image loader
+    * @param key Optional key of @p img to pass to the image loader (eg. if @p img is an edje file)
+    *
+    * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+    *
+    * @note The icon image set by this function can be changed by
+    * elm_toolbar_item_icon_set().
+    * 
+    * @ingroup Toolbar
+    */
+   EAPI Eina_Bool elm_toolbar_item_icon_memfile_set(Elm_Toolbar_Item *item, const void *img, size_t size, const char *format, const char *key) EINA_ARG_NONNULL(1);
+
+   /**
     * Delete them item from the toolbar.
     *
     * @param item The item of toolbar to be deleted.
@@ -13455,7 +15061,7 @@ extern "C" {
     *
     * @ingroup Toolbar
     */
-   EAPI Evas_Object            *elm_toolbar_item_menu_get(Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object            *elm_toolbar_item_menu_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Add a new state to @p item.
@@ -13823,6 +15429,8 @@ extern "C" {
    EAPI void         elm_object_tooltip_show(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_object_tooltip_hide(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_object_tooltip_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1, 2);
+   EAPI void         elm_object_tooltip_domain_translatable_text_set(Evas_Object *obj, const char *domain, const char *text) EINA_ARG_NONNULL(1, 3);
+#define elm_object_tooltip_translatable_text_set(obj, text) elm_object_tooltip_domain_translatable_text_set((obj), NULL, (text))
    EAPI void         elm_object_tooltip_content_cb_set(Evas_Object *obj, Elm_Tooltip_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
    EAPI void         elm_object_tooltip_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_object_tooltip_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
@@ -13837,10 +15445,19 @@ extern "C" {
    /**
     * @defgroup Cursors Cursors
     *
-    * The Cursor is an internal smart object used to customize the
-    * cursor displayed over objects (or widgets).
-    * It can use default X cursors (if using X), or cursors from a
-    * theme.
+    * The Elementary cursor is an internal smart object used to
+    * customize the mouse cursor displayed over objects (or
+    * widgets). In the most common scenario, the cursor decoration
+    * comes from the graphical @b engine Elementary is running
+    * on. Those engines may provide different decorations for cursors,
+    * and Elementary provides functions to choose them (think of X11
+    * cursors, as an example).
+    *
+    * There's also the possibility of, besides using engine provided
+    * cursors, also use ones coming from Edje theming files. Both
+    * globally and per widget, Elementary makes it possible for one to
+    * make the cursors lookup to be held on engines only or on
+    * Elementary's theme file, too.
     *
     * @{
     */
@@ -14576,7 +16193,7 @@ extern "C" {
     * @param policy_v Vertical scrollbar policy.
     *
     * This sets the scrollbar visibility policy for the given scroller.
-    * #ELM_SCROLLER_POLICY_AUTO means the scrollber is made visible if it
+    * #ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if it
     * is needed, and otherwise kept hidden. #ELM_SCROLLER_POLICY_ON turns
     * it on all the time, and #ELM_SCROLLER_POLICY_OFF always keeps it off.
     * This applies respectively for the horizontal and vertical scrollbars.
@@ -15138,7 +16755,8 @@ extern "C" {
     *
     * @ingroup List
     */
-   EAPI Evas_Object     *elm_list_item_base_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object     *elm_list_item_object_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object     *elm_list_item_base_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Get the label of item.
@@ -16318,7 +17936,7 @@ extern "C" {
     *
     * In general to indicate how the genlist should expand items horizontally to
     * fill the list area, use elm_genlist_horizontal_set(). Valid modes are
-    * ELM_LIST_LIMIT and ELM_LIST_SCROLL . The default is ELM_LIST_SCROLL. This
+    * ELM_LIST_LIMIT and ELM_LIST_SCROLL. The default is ELM_LIST_SCROLL. This
     * mode means that if items are too wide to fit, the scroller will scroll
     * horizontally. Otherwise items are expanded to fill the width of the
     * viewport of the scroller. If it is ELM_LIST_LIMIT, items will be expanded
@@ -16421,6 +18039,14 @@ extern "C" {
     * - @c "drag" - This is called when the item in the list is being dragged.
     * - @c "longpressed" - This is called when the item is pressed for a certain
     *   amount of time. By default it's 1 second.
+    * - @c "scroll,anim,start" - This is called when scrolling animation has
+    *   started.
+    * - @c "scroll,anim,stop" - This is called when scrolling animation has
+    *   stopped.
+    * - @c "scroll,drag,start" - This is called when dragging the content has
+    *   started.
+    * - @c "scroll,drag,stop" - This is called when dragging the content has
+    *   stopped.
     * - @c "scroll,edge,top" - This is called when the genlist is scrolled until
     *   the top edge.
     * - @c "scroll,edge,bottom" - This is called when the genlist is scrolled
@@ -18225,6 +19851,7 @@ extern "C" {
     * @return The top object or NULL if none
     */
    EAPI Evas_Object *elm_pager_content_top_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
    /**
     * @}
     */
@@ -22183,6 +23810,8 @@ extern "C" {
     * @ingroup Panes
     */
    EAPI Eina_Bool             elm_panes_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                  elm_panes_fixed_set(Evas_Object *obj, Eina_Bool fixed) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool             elm_panes_fixed_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * @}
@@ -23791,6 +25420,15 @@ extern "C" {
    EAPI void                   elm_diskselector_display_item_num_set(Evas_Object *obj, int num) EINA_ARG_NONNULL(1);
 
    /**
+    * Get the number of items in the diskselector object.
+    *
+    * @param obj The diskselector object.
+    *
+    * @ingroup Diskselector
+    */
+   EAPI int                   elm_diskselector_display_item_num_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
     * Set bouncing behaviour when the scrolled content reaches an edge.
     *
     * Tell the internal scroller object whether it should bounce or not
@@ -23846,7 +25484,7 @@ extern "C" {
     * @param policy_v Vertical scrollbar policy.
     *
     * This sets the scrollbar visibility policy for the given scroller.
-    * #ELM_SCROLLER_POLICY_AUTO means the scrollber is made visible if it
+    * #ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if it
     * is needed, and otherwise kept hidden. #ELM_SCROLLER_POLICY_ON turns
     * it on all the time, and #ELM_SCROLLER_POLICY_OFF always keeps it off.
     * This applies respectively for the horizontal and vertical scrollbars.
@@ -24484,8 +26122,6 @@ extern "C" {
     * @ref tutorial_ctxpopup shows the usage of a good deal of the API.
     * @{
     */
-   typedef struct _Elm_Ctxpopup_Item Elm_Ctxpopup_Item;
-
    typedef enum _Elm_Ctxpopup_Direction
      {
         ELM_CTXPOPUP_DIRECTION_DOWN, /**< ctxpopup show appear below clicked
@@ -24496,6 +26132,7 @@ extern "C" {
                                           the clicked area */
         ELM_CTXPOPUP_DIRECTION_UP, /**< ctxpopup show appear above the clicked
                                         area */
+        ELM_CTXPOPUP_DIRECTION_UNKNOWN, /**< ctxpopup does not determine it's direction yet*/
      } Elm_Ctxpopup_Direction;
 
    /**
@@ -24565,48 +26202,48 @@ extern "C" {
     *
     * @see elm_ctxpopup_content_set()
     */
-   Elm_Ctxpopup_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+   Elm_Object_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
    /**
     * @brief Delete the given item in a ctxpopup object.
     *
-    * @param item Ctxpopup item to be deleted
+    * @param it Ctxpopup item to be deleted
     *
     * @see elm_ctxpopup_item_append()
     */
-   EAPI void          elm_ctxpopup_item_del(Elm_Ctxpopup_Item *it) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_item_del(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief Set the ctxpopup item's state as disabled or enabled.
     *
-    * @param item Ctxpopup item to be enabled/disabled
+    * @param it Ctxpopup item to be enabled/disabled
     * @param disabled @c EINA_TRUE to disable it, @c EINA_FALSE to enable it
     *
     * When disabled the item is greyed out to indicate it's state.
     */
-   EAPI void          elm_ctxpopup_item_disabled_set(Elm_Ctxpopup_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the ctxpopup item's disabled/enabled state.
     *
-    * @param item Ctxpopup item to be enabled/disabled
+    * @param it Ctxpopup item to be enabled/disabled
     * @return disabled @c EINA_TRUE, if disabled, @c EINA_FALSE otherwise
     *
     * @see elm_ctxpopup_item_disabled_set()
     */
-   EAPI Eina_Bool     elm_ctxpopup_item_disabled_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool     elm_ctxpopup_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the icon object for the given ctxpopup item.
     *
-    * @param item Ctxpopup item
+    * @param it Ctxpopup item
     * @return icon object or @c NULL, if the item does not have icon or an error
     * occurred
     *
     * @see elm_ctxpopup_item_append()
     * @see elm_ctxpopup_item_icon_set()
     */
-   EAPI Evas_Object  *elm_ctxpopup_item_icon_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object  *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief Sets the side icon associated with the ctxpopup item
     *
-    * @param item Ctxpopup item
+    * @param it Ctxpopup item
     * @param icon Icon object to be set
     *
     * Once the icon object is set, a previously set one will be deleted.
@@ -24615,25 +26252,25 @@ extern "C" {
     *
     * @see elm_ctxpopup_item_append()
     */
-   EAPI void          elm_ctxpopup_item_icon_set(Elm_Ctxpopup_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the label for the given ctxpopup item.
     *
-    * @param item Ctxpopup item
+    * @param it Ctxpopup item
     * @return label string or @c NULL, if the item does not have label or an
     * error occured
     *
     * @see elm_ctxpopup_item_append()
     * @see elm_ctxpopup_item_label_set()
     */
-   EAPI const char   *elm_ctxpopup_item_label_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+   EAPI const char   *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief (Re)set the label on the given ctxpopup item.
     *
-    * @param item Ctxpopup item
+    * @param it Ctxpopup item
     * @param label String to set as label
     */
-   EAPI void          elm_ctxpopup_item_label_set(Elm_Ctxpopup_Item *item, const char *label) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
    /**
     * @brief Set an elm widget as the content of the ctxpopup.
     *
@@ -24690,7 +26327,18 @@ extern "C" {
     *
     * @see elm_ctxpopup_direction_priority_set() for more information.
     */
-   EAPI void          elm_ctxpopup_direction_priority_get(Evas_Object *obj, Elm_Ctxpopup_Direction *first, Elm_Ctxpopup_Direction *second, Elm_Ctxpopup_Direction *third, Elm_Ctxpopup_Direction *fourth) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_direction_priority_get(Evas_Object *obj, Elm_Ctxpopup_Direction *first, Elm_Ctxpopup_Direction *second, Elm_Ctxpopup_Direction *third, Elm_Ctxpopup_Direction *fourth) EINA_ARG_NONNULL(1);
+
+   /**
+    * @brief Get the current direction of a ctxpopup.
+    *
+    * @param obj Ctxpopup object
+    * @return current direction of a ctxpopup
+    *
+    * @warning Once the ctxpopup showed up, the direction would be determined
+    */
+   EAPI Elm_Ctxpopup_Direction elm_ctxpopup_direction_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
    /**
     * @}
     */
@@ -25520,117 +27168,117 @@ extern "C" {
     * @}
     */
 
-  typedef struct _Elm_Store                      Elm_Store;
-  typedef struct _Elm_Store_Filesystem           Elm_Store_Filesystem;
-  typedef struct _Elm_Store_Item                 Elm_Store_Item;
-  typedef struct _Elm_Store_Item_Filesystem      Elm_Store_Item_Filesystem;
-  typedef struct _Elm_Store_Item_Info            Elm_Store_Item_Info;
-  typedef struct _Elm_Store_Item_Info_Filesystem Elm_Store_Item_Info_Filesystem;
-  typedef struct _Elm_Store_Item_Mapping         Elm_Store_Item_Mapping;
-  typedef struct _Elm_Store_Item_Mapping_Empty   Elm_Store_Item_Mapping_Empty;
-  typedef struct _Elm_Store_Item_Mapping_Icon    Elm_Store_Item_Mapping_Icon;
-  typedef struct _Elm_Store_Item_Mapping_Photo   Elm_Store_Item_Mapping_Photo;
-  typedef struct _Elm_Store_Item_Mapping_Custom  Elm_Store_Item_Mapping_Custom;
-
-  typedef Eina_Bool (*Elm_Store_Item_List_Cb) (void *data, Elm_Store_Item_Info *info);
-  typedef void      (*Elm_Store_Item_Fetch_Cb) (void *data, Elm_Store_Item *sti);
-  typedef void      (*Elm_Store_Item_Unfetch_Cb) (void *data, Elm_Store_Item *sti);
-  typedef void     *(*Elm_Store_Item_Mapping_Cb) (void *data, Elm_Store_Item *sti, const char *part);
-
-  typedef enum
-    {
-       ELM_STORE_ITEM_MAPPING_NONE = 0,
-       ELM_STORE_ITEM_MAPPING_LABEL, // const char * -> label
-       ELM_STORE_ITEM_MAPPING_STATE, // Eina_Bool -> state
-       ELM_STORE_ITEM_MAPPING_ICON, // char * -> icon path
-       ELM_STORE_ITEM_MAPPING_PHOTO, // char * -> photo path
-       ELM_STORE_ITEM_MAPPING_CUSTOM, // item->custom(it->data, it, part) -> void * (-> any)
-       // can add more here as needed by common apps
-       ELM_STORE_ITEM_MAPPING_LAST
-    } Elm_Store_Item_Mapping_Type;
-
-  struct _Elm_Store_Item_Mapping_Icon
-    {
-       // FIXME: allow edje file icons
-       int                   w, h;
-       Elm_Icon_Lookup_Order lookup_order;
-       Eina_Bool             standard_name : 1;
-       Eina_Bool             no_scale : 1;
-       Eina_Bool             smooth : 1;
-       Eina_Bool             scale_up : 1;
-       Eina_Bool             scale_down : 1;
-    };
+   typedef struct _Elm_Store                      Elm_Store;
+   typedef struct _Elm_Store_Filesystem           Elm_Store_Filesystem;
+   typedef struct _Elm_Store_Item                 Elm_Store_Item;
+   typedef struct _Elm_Store_Item_Filesystem      Elm_Store_Item_Filesystem;
+   typedef struct _Elm_Store_Item_Info            Elm_Store_Item_Info;
+   typedef struct _Elm_Store_Item_Info_Filesystem Elm_Store_Item_Info_Filesystem;
+   typedef struct _Elm_Store_Item_Mapping         Elm_Store_Item_Mapping;
+   typedef struct _Elm_Store_Item_Mapping_Empty   Elm_Store_Item_Mapping_Empty;
+   typedef struct _Elm_Store_Item_Mapping_Icon    Elm_Store_Item_Mapping_Icon;
+   typedef struct _Elm_Store_Item_Mapping_Photo   Elm_Store_Item_Mapping_Photo;
+   typedef struct _Elm_Store_Item_Mapping_Custom  Elm_Store_Item_Mapping_Custom;
 
-  struct _Elm_Store_Item_Mapping_Empty
-    {
-       Eina_Bool             dummy;
-    };
+   typedef Eina_Bool (*Elm_Store_Item_List_Cb) (void *data, Elm_Store_Item_Info *info);
+   typedef void      (*Elm_Store_Item_Fetch_Cb) (void *data, Elm_Store_Item *sti);
+   typedef void      (*Elm_Store_Item_Unfetch_Cb) (void *data, Elm_Store_Item *sti);
+   typedef void     *(*Elm_Store_Item_Mapping_Cb) (void *data, Elm_Store_Item *sti, const char *part);
 
-  struct _Elm_Store_Item_Mapping_Photo
-    {
-       int                   size;
-    };
+   typedef enum
+     {
+        ELM_STORE_ITEM_MAPPING_NONE = 0,
+        ELM_STORE_ITEM_MAPPING_LABEL, // const char * -> label
+        ELM_STORE_ITEM_MAPPING_STATE, // Eina_Bool -> state
+        ELM_STORE_ITEM_MAPPING_ICON, // char * -> icon path
+        ELM_STORE_ITEM_MAPPING_PHOTO, // char * -> photo path
+        ELM_STORE_ITEM_MAPPING_CUSTOM, // item->custom(it->data, it, part) -> void * (-> any)
+        // can add more here as needed by common apps
+        ELM_STORE_ITEM_MAPPING_LAST
+     } Elm_Store_Item_Mapping_Type;
+
+   struct _Elm_Store_Item_Mapping_Icon
+     {
+        // FIXME: allow edje file icons
+        int                   w, h;
+        Elm_Icon_Lookup_Order lookup_order;
+        Eina_Bool             standard_name : 1;
+        Eina_Bool             no_scale : 1;
+        Eina_Bool             smooth : 1;
+        Eina_Bool             scale_up : 1;
+        Eina_Bool             scale_down : 1;
+     };
 
-  struct _Elm_Store_Item_Mapping_Custom
-    {
-       Elm_Store_Item_Mapping_Cb func;
-    };
+   struct _Elm_Store_Item_Mapping_Empty
+     {
+        Eina_Bool             dummy;
+     };
 
-  struct _Elm_Store_Item_Mapping
-    {
-       Elm_Store_Item_Mapping_Type     type;
-       const char                     *part;
-       int                             offset;
-       union
-         {
-            Elm_Store_Item_Mapping_Empty  empty;
-            Elm_Store_Item_Mapping_Icon   icon;
-            Elm_Store_Item_Mapping_Photo  photo;
-            Elm_Store_Item_Mapping_Custom custom;
-            // add more types here
-         } details;
-    };
+   struct _Elm_Store_Item_Mapping_Photo
+     {
+        int                   size;
+     };
 
-  struct _Elm_Store_Item_Info
-    {
-      Elm_Genlist_Item_Class       *item_class;
-      const Elm_Store_Item_Mapping *mapping;
-      void                         *data;
-      char                         *sort_id;
-    };
+   struct _Elm_Store_Item_Mapping_Custom
+     {
+        Elm_Store_Item_Mapping_Cb func;
+     };
 
-  struct _Elm_Store_Item_Info_Filesystem
-    {
-      Elm_Store_Item_Info  base;
-      char                *path;
-    };
+   struct _Elm_Store_Item_Mapping
+     {
+        Elm_Store_Item_Mapping_Type     type;
+        const char                     *part;
+        int                             offset;
+        union
+          {
+             Elm_Store_Item_Mapping_Empty  empty;
+             Elm_Store_Item_Mapping_Icon   icon;
+             Elm_Store_Item_Mapping_Photo  photo;
+             Elm_Store_Item_Mapping_Custom custom;
+             // add more types here
+          } details;
+     };
+
+   struct _Elm_Store_Item_Info
+     {
+        Elm_Genlist_Item_Class       *item_class;
+        const Elm_Store_Item_Mapping *mapping;
+        void                         *data;
+        char                         *sort_id;
+     };
+
+   struct _Elm_Store_Item_Info_Filesystem
+     {
+        Elm_Store_Item_Info  base;
+        char                *path;
+     };
 
 #define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } }
 #define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it)
 
-  EAPI void                    elm_store_free(Elm_Store *st);
+   EAPI void                    elm_store_free(Elm_Store *st);
 
-  EAPI Elm_Store              *elm_store_filesystem_new(void);
-  EAPI void                    elm_store_filesystem_directory_set(Elm_Store *st, const char *dir) EINA_ARG_NONNULL(1);
-  EAPI const char             *elm_store_filesystem_directory_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
-  EAPI const char             *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+   EAPI Elm_Store              *elm_store_filesystem_new(void);
+   EAPI void                    elm_store_filesystem_directory_set(Elm_Store *st, const char *dir) EINA_ARG_NONNULL(1);
+   EAPI const char             *elm_store_filesystem_directory_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+   EAPI const char             *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
 
-  EAPI void                    elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                    elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj) EINA_ARG_NONNULL(1);
 
-  EAPI void                    elm_store_cache_set(Elm_Store *st, int max) EINA_ARG_NONNULL(1);
-  EAPI int                     elm_store_cache_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
-  EAPI void                    elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
-  EAPI void                    elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
-  EAPI void                    elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread) EINA_ARG_NONNULL(1);
-  EAPI Eina_Bool               elm_store_fetch_thread_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+   EAPI void                    elm_store_cache_set(Elm_Store *st, int max) EINA_ARG_NONNULL(1);
+   EAPI int                     elm_store_cache_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+   EAPI void                    elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+   EAPI void                    elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+   EAPI void                    elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool               elm_store_fetch_thread_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
 
-  EAPI void                    elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
-  EAPI void                    elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted) EINA_ARG_NONNULL(1);
-  EAPI Eina_Bool               elm_store_sorted_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
-  EAPI void                    elm_store_item_data_set(Elm_Store_Item *sti, void *data) EINA_ARG_NONNULL(1);
-  EAPI void                   *elm_store_item_data_get(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
-  EAPI const Elm_Store        *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
-  EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+   EAPI void                    elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+   EAPI void                    elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool               elm_store_sorted_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+   EAPI void                    elm_store_item_data_set(Elm_Store_Item *sti, void *data) EINA_ARG_NONNULL(1);
+   EAPI void                   *elm_store_item_data_get(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+   EAPI const Elm_Store        *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+   EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
 
    /**
     * @defgroup SegmentControl SegmentControl
@@ -25753,7 +27401,7 @@ extern "C" {
     * positioned at left.
     *
     * @see elm_segment_control_item_add()
-    * @see elm_segment_control_count_get()
+    * @see elm_segment_control_item_count_get()
     * @see elm_segment_control_item_del()
     *
     * @ingroup SegmentControl
@@ -26079,65 +27727,470 @@ extern "C" {
    EAPI Evas_Object *elm_factory_add(Evas_Object *parent);
    EAPI void         elm_factory_content_set(Evas_Object *obj, Evas_Object *content);
    EAPI Evas_Object *elm_factory_content_get(const Evas_Object *obj);
-   
+   EAPI void         elm_factory_maxmin_mode_set(Evas_Object *obj, Eina_Bool enabled);
+   EAPI Eina_Bool    elm_factory_maxmin_mode_get(const Evas_Object *obj);
+   EAPI void         elm_factory_maxmin_reset_set(Evas_Object *obj);
+
+   /**
+    * @defgroup Video Video
+    *
+    * @addtogroup Video
+    * @{
+    *
+    * Elementary comes with two object that help design application that need
+    * to display video. The main one, Elm_Video, display a video by using Emotion.
+    * It does embedded the video inside an Edje object, so you can do some
+    * animation depending on the video state change. It does also implement a
+    * ressource management policy to remove this burden from the application writer.
+    *
+    * The second one, Elm_Player is a video player that need to be linked with and Elm_Video.
+    * It take care of updating its content according to Emotion event and provide a
+    * way to theme itself. It also does automatically raise the priority of the
+    * linked Elm_Video so it will use the video decoder if available. It also does
+    * activate the remember function on the linked Elm_Video object.
+    *
+    * Signals that you can add callback for are :
+    *
+    * "forward,clicked" - the user clicked the forward button.
+    * "info,clicked" - the user clicked the info button.
+    * "next,clicked" - the user clicked the next button.
+    * "pause,clicked" - the user clicked the pause button.
+    * "play,clicked" - the user clicked the play button.
+    * "prev,clicked" - the user clicked the prev button.
+    * "rewind,clicked" - the user clicked the rewind button.
+    * "stop,clicked" - the user clicked the stop button.
+    */
+
+   /**
+    * @brief Add a new Elm_Player object to the given parent Elementary (container) object.
+    *
+    * @param parent The parent object
+    * @return a new player widget handle or @c NULL, on errors.
+    *
+    * This function inserts a new player widget on the canvas.
+    *
+    * @see elm_player_video_set()
+    *
+    * @ingroup Video
+    */
+   EAPI Evas_Object *elm_player_add(Evas_Object *parent);
+
+   /**
+    * @brief Link a Elm_Payer with an Elm_Video object.
+    *
+    * @param player the Elm_Player object.
+    * @param video The Elm_Video object.
+    *
+    * This mean that action on the player widget will affect the
+    * video object and the state of the video will be reflected in
+    * the player itself.
+    *
+    * @see elm_player_add()
+    * @see elm_video_add()
+    *
+    * @ingroup Video
+    */
+   EAPI void elm_player_video_set(Evas_Object *player, Evas_Object *video);
+
+   /**
+    * @brief Add a new Elm_Video object to the given parent Elementary (container) object.
+    *
+    * @param parent The parent object
+    * @return a new video widget handle or @c NULL, on errors.
+    *
+    * This function inserts a new video widget on the canvas.
+    *
+    * @seeelm_video_file_set()
+    * @see elm_video_uri_set()
+    *
+    * @ingroup Video
+    */
    EAPI Evas_Object *elm_video_add(Evas_Object *parent);
+
+   /**
+    * @brief Define the file that will be the video source.
+    *
+    * @param video The video object to define the file for.
+    * @param filename The file to target.
+    *
+    * This function will explicitly define a filename as a source
+    * for the video of the Elm_Video object.
+    *
+    * @see elm_video_uri_set()
+    * @see elm_video_add()
+    * @see elm_player_add()
+    *
+    * @ingroup Video
+    */
    EAPI void elm_video_file_set(Evas_Object *video, const char *filename);
+
+   /**
+    * @brief Define the uri that will be the video source.
+    *
+    * @param video The video object to define the file for.
+    * @param uri The uri to target.
+    *
+    * This function will define an uri as a source for the video of the
+    * Elm_Video object. URI could be remote source of video, like http:// or local source
+    * like for example WebCam who are most of the time v4l2:// (but that depend and
+    * you should use Emotion API to request and list the available Webcam on your system).
+    *
+    * @see elm_video_file_set()
+    * @see elm_video_add()
+    * @see elm_player_add()
+    *
+    * @ingroup Video
+    */
    EAPI void elm_video_uri_set(Evas_Object *video, const char *uri);
+
+   /**
+    * @brief Get the underlying Emotion object.
+    *
+    * @param video The video object to proceed the request on.
+    * @return the underlying Emotion object.
+    *
+    * @ingroup Video
+    */
    EAPI Evas_Object *elm_video_emotion_get(Evas_Object *video);
+
+   /**
+    * @brief Start to play the video
+    *
+    * @param video The video object to proceed the request on.
+    *
+    * Start to play the video and cancel all suspend state.
+    *
+    * @ingroup Video
+    */
    EAPI void elm_video_play(Evas_Object *video);
+
+   /**
+    * @brief Pause the video
+    *
+    * @param video The video object to proceed the request on.
+    *
+    * Pause the video and start a timer to trigger suspend mode.
+    *
+    * @ingroup Video
+    */
    EAPI void elm_video_pause(Evas_Object *video);
+
+   /**
+    * @brief Stop the video
+    *
+    * @param video The video object to proceed the request on.
+    *
+    * Stop the video and put the emotion in deep sleep mode.
+    *
+    * @ingroup Video
+    */
    EAPI void elm_video_stop(Evas_Object *video);
+
+   /**
+    * @brief Is the video actually playing.
+    *
+    * @param video The video object to proceed the request on.
+    * @return EINA_TRUE if the video is actually playing.
+    *
+    * You should consider watching event on the object instead of polling
+    * the object state.
+    *
+    * @ingroup Video
+    */
    EAPI Eina_Bool elm_video_is_playing(Evas_Object *video);
+
+   /**
+    * @brief Is it possible to seek inside the video.
+    *
+    * @param video The video object to proceed the request on.
+    * @return EINA_TRUE if is possible to seek inside the video.
+    *
+    * @ingroup Video
+    */
    EAPI Eina_Bool elm_video_is_seekable(Evas_Object *video);
+
+   /**
+    * @brief Is the audio muted.
+    *
+    * @param video The video object to proceed the request on.
+    * @return EINA_TRUE if the audio is muted.
+    *
+    * @ingroup Video
+    */
    EAPI Eina_Bool elm_video_audio_mute_get(Evas_Object *video);
+
+   /**
+    * @brief Change the mute state of the Elm_Video object.
+    *
+    * @param video The video object to proceed the request on.
+    * @param mute The new mute state.
+    *
+    * @ingroup Video
+    */
    EAPI void elm_video_audio_mute_set(Evas_Object *video, Eina_Bool mute);
+
+   /**
+    * @brief Get the audio level of the current video.
+    *
+    * @param video The video object to proceed the request on.
+    * @return the current audio level.
+    *
+    * @ingroup Video
+    */
    EAPI double elm_video_audio_level_get(Evas_Object *video);
+
+   /**
+    * @brief Set the audio level of anElm_Video object.
+    *
+    * @param video The video object to proceed the request on.
+    * @param volume The new audio volume.
+    *
+    * @ingroup Video
+    */
    EAPI void elm_video_audio_level_set(Evas_Object *video, double volume);
+
    EAPI double elm_video_play_position_get(Evas_Object *video);
    EAPI void elm_video_play_position_set(Evas_Object *video, double position);
    EAPI double elm_video_play_length_get(Evas_Object *video);
    EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember);
    EAPI Eina_Bool elm_video_remember_position_get(Evas_Object *video);
    EAPI const char *elm_video_title_get(Evas_Object *video);
+   /**
+    * @}
+    */
 
-   EAPI Evas_Object *elm_player_add(Evas_Object *parent);
-   EAPI void elm_player_video_set(Evas_Object *player, Evas_Object *video);
+   /**
+    * @defgroup Naviframe Naviframe
+    * @ingroup Elementary
+    *
+    * @brief Naviframe is a kind of view manager for the applications.
+    *
+    * Naviframe provides functions to switch different pages with stack
+    * mechanism. It means if one page(item) needs to be changed to the new one,
+    * then naviframe would push the new page to it's internal stack. Of course,
+    * it can be back to the previous page by popping the top page. Naviframe
+    * provides some transition effect while the pages are switching (same as
+    * pager).
+    *
+    * Since each item could keep the different styles, users could keep the
+    * same look & feel for the pages or different styles for the items in it's
+    * application.
+    *
+    * Signals that you can add callback for are:
+    *
+    * @li "transition,finished" - When the transition is finished in changing
+    *     the item
+    * @li "title,clicked" - User clicked title area
+    *
+    * Default contents parts for the naviframe items that you can use for are:
+    *
+    * @li "elm.swallow.content" - The main content of the page
+    * @li "elm.swallow.prev_btn" - The button to go to the previous page
+    * @li "elm.swallow.next_btn" - The button to go to the next page
+    *
+    * Default text parts of naviframe items that you can be used are:
+    *
+    * @li "elm.text.title" - The title label in the title area
+    *
+    * @ref tutorial_naviframe gives a good overview of the usage of the API.
+    */
+
+   /**
+    * @addtogroup Naviframe
+    * @{
+    */
 
-  /* naviframe */
+   /**
+    * @brief Add a new Naviframe object to the parent.
+    *
+    * @param parent Parent object
+    * @return New object or @c NULL, if it cannot be created
+    *
+    * @ingroup Naviframe
+    */
    EAPI Evas_Object        *elm_naviframe_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Push a new item to the top of the naviframe stack (and show it).
+    *
+    * @param obj The naviframe object
+    * @param title_label The label in the title area. The name of the title
+    *        label part is "elm.text.title"
+    * @param prev_btn The button to go to the previous item. If it is NULL,
+    *        then naviframe will create a back button automatically. The name of
+    *        the prev_btn part is "elm.swallow.prev_btn"
+    * @param next_btn The button to go to the next item. Or It could be just an
+    *        extra function button. The name of the next_btn part is
+    *        "elm.swallow.next_btn"
+    * @param content The main content object. The name of content part is
+    *        "elm.swallow.content"
+    * @param item_style The current item style name. @c NULL would be default.
+    * @return The created item or @c NULL upon failure.
+    *
+    * The item pushed becomes one page of the naviframe, this item will be
+    * deleted when it is popped.
+    *
+    * @see also elm_naviframe_item_style_set()
+    *
+    * The following styles are available for this item:
+    * @li @c "default"
+    *
+    * @ingroup Naviframe
+    */
    EAPI Elm_Object_Item    *elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) EINA_ARG_NONNULL(1, 5);
+   /**
+    * @brief Pop an item that is on top of the stack
+    *
+    * @param obj The naviframe object
+    * @return @c NULL or the content object(if the
+    *         elm_naviframe_content_preserve_on_pop_get is true).
+    *
+    * This pops an item that is on the top(visible) of the naviframe, makes it
+    * disappear, then deletes the item. The item that was underneath it on the
+    * stack will become visible.
+    *
+    * @see also elm_naviframe_content_preserve_on_pop_get()
+    *
+    * @ingroup Naviframe
+    */
    EAPI Evas_Object        *elm_naviframe_item_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Pop the items between the top and the above one on the given item.
+    *
+    * @param it The naviframe item
+    *
+    * @ingroup Naviframe
+    */
+   EAPI void                elm_naviframe_item_pop_to(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Delete the given item instantly.
+    *
+    * @param it The naviframe item
+    *
+    * This just deletes the given item from the naviframe item list instantly.
+    * So this would not emit any signals for view transitions but just change
+    * the current view if the given item is a top one.
+    *
+    * @ingroup Naviframe
+    */
+   EAPI void                elm_naviframe_item_del(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief preserve the content objects when items are popped.
+    *
+    * @param obj The naviframe object
+    * @param preserve Enable the preserve mode if EINA_TRUE, disable otherwise
+    *
+    * @see also elm_naviframe_content_preserve_on_pop_get()
+    *
+    * @ingroup Naviframe
+    */
    EAPI void                elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get a value whether preserve mode is enabled or not.
+    *
+    * @param obj The naviframe object
+    * @return If @c EINA_TRUE, preserve mode is enabled
+    *
+    * @see also elm_naviframe_content_preserve_on_pop_set()
+    *
+    * @ingroup Naviframe
+    */
    EAPI Eina_Bool           elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void                elm_naviframe_item_title_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char         *elm_naviframe_item_title_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
-   EAPI void                elm_naviframe_item_subtitle_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char         *elm_naviframe_item_subtitle_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get a top item on the naviframe stack
+    *
+    * @param obj The naviframe object
+    * @return The top item on the naviframe stack or @c NULL, if the stack is
+    *         empty
+    *
+    * @ingroup Naviframe
+    */
    EAPI Elm_Object_Item    *elm_naviframe_top_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get a bottom item on the naviframe stack
+    *
+    * @param obj The naviframe object
+    * @return The bottom item on the naviframe stack or @c NULL, if the stack is
+    *         empty
+    *
+    * @ingroup Naviframe
+    */
    EAPI Elm_Object_Item    *elm_naviframe_bottom_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set an item style
+    *
+    * @param obj The naviframe item
+    * @param item_style The current item style name. @c NULL would be default
+    *
+    * The following styles are available for this item:
+    * @li @c "default"
+    *
+    * @see also elm_naviframe_item_style_get()
+    *
+    * @ingroup Naviframe
+    */
    EAPI void                elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get an item style
+    *
+    * @param obj The naviframe item
+    * @return The current item style name
+    *
+    * @see also elm_naviframe_item_style_set()
+    *
+    * @ingroup Naviframe
+    */
    EAPI const char         *elm_naviframe_item_style_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Show/Hide the title area
+    *
+    * @param it The naviframe item
+    * @param visible If @c EINA_TRUE, title area will be visible, hidden
+    *        otherwise
+    *
+    * When the title area is invisible, then the controls would be hidden so as     * to expand the content area to full-size.
+    *
+    * @see also elm_naviframe_item_title_visible_get()
+    *
+    * @ingroup Naviframe
+    */
    EAPI void                elm_naviframe_item_title_visible_set(Elm_Object_Item *it, Eina_Bool visible) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get a value whether title area is visible or not.
+    *
+    * @param it The naviframe item
+    * @return If @c EINA_TRUE, title area is visible
+    *
+    * @see also elm_naviframe_item_title_visible_set()
+    *
+    * @ingroup Naviframe
+    */
    EAPI Eina_Bool           elm_naviframe_item_title_visible_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
 
    /**
-    * @defgroup Video Video
+    * @brief Set creating prev button automatically or not
     *
-    * This object display an player that let you control an Elm_Video
-    * object. It take care of updating it's content according to what is
-    * going on inside the Emotion object. It does activate the remember
-    * function on the linked Elm_Video object.
+    * @param obj The naviframe object
+    * @param auto_pushed If @c EINA_TRUE, the previous button(back button) will
+    *        be created internally when you pass the @c NULL to the prev_btn
+    *        parameter in elm_naviframe_item_push
     *
-    * Signals that you cann add callback for are :
+    * @see also elm_naviframe_item_push()
+    */
+   EAPI void                elm_naviframe_prev_btn_auto_pushed_set(Evas_Object *obj, Eina_Bool auto_pushed) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get a value whether prev button(back button) will be auto pushed or
+    *        not.
     *
-    * "forward,clicked" - the user clicked the forward button.
-    * "info,clicked" - the user clicked the info button.
-    * "next,clicked" - the user clicked the next button.
-    * "pause,clicked" - the user clicked the pause button.
-    * "play,clicked" - the user clicked the play button.
-    * "prev,clicked" - the user clicked the prev button.
-    * "rewind,clicked" - the user clicked the rewind button.
-    * "stop,clicked" - the user clicked the stop button.
+    * @param obj The naviframe object
+    * @return If @c EINA_TRUE, prev button will be auto pushed.
+    *
+    * @see also elm_naviframe_item_push()
+    *           elm_naviframe_prev_btn_auto_pushed_set()
+    */
+   EAPI Eina_Bool           elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj); EINA_ARG_NONNULL(1);
+
+   /**
+    * @}
     */
 
 #ifdef __cplusplus