Elm entry: Expose the internal textblock object.

This commit introduces two new API: elm_entry_textblock_get and
elm_entry_calc_force. These two APIs can be used to manipulate the
textblock object inside the entry in a safe manner. This exposes an
interface that wasn't available before letting do new and cool things
with entries.

SVN revision: 65169
This commit is contained in:
Tom Hacohen 2011-11-14 13:56:06 +00:00
parent 1566e476c8
commit beac21bb68
2 changed files with 54 additions and 0 deletions

View File

@ -11078,6 +11078,39 @@ extern "C" {
* @return The selected text within the entry or NULL on failure
*/
EAPI const char *elm_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Returns the actual textblock object of the entry.
*
* This function exposes the internal textblock object that actually
* contains and draws the text. This should be used for low-level
* manipulations that are otherwise not possible.
*
* Changing the textblock directly from here will not notify edje/elm to
* recalculate the textblock size automatically, so any modifications
* done to the textblock returned by this function should be followed by
* a call to elm_entry_calc_force().
*
* The return value is marked as const as an additional warning.
* One should not use the returned object with any of the generic evas
* functions (geometry_get/resize/move and etc), but only with the textblock
* functions; The former will either not work at all, or break the correct
* functionality.
*
* @param obj The entry object
* @return The textblock object.
*/
EAPI const Evas_Object *elm_entry_textblock_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Forces calculation of the entry size and text layouting.
*
* This should be used after modifying the textblock object directly. See
* elm_entry_textblock_get() for more information.
*
* @param obj The entry object
*
* @see elm_entry_textblock_get()
*/
EAPI void elm_entry_calc_force(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Inserts the given text into the entry at the current cursor position.
*

View File

@ -2488,6 +2488,27 @@ elm_entry_is_empty(const Evas_Object *obj)
return !ret;
}
EAPI const Evas_Object *
elm_entry_textblock_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return NULL;
return edje_object_part_object_get(wd->ent, "elm.text");
}
EAPI void
elm_entry_calc_force(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
edje_object_calc_force(wd->ent);
}
EAPI const char *
elm_entry_selection_get(const Evas_Object *obj)
{