Evas_Object *ea_editfield_add(Evas_Object *parent, Ea_Editfield_Type type);
/**
+ * @brief Disable the clear button. It makes the clear button be hidden always or not.
+ *
+ * @details Disable the clear button. If @param disable is EINA_TRUE, it will hide the clear button always.
+ * If @param disable is EINA_FALSE, the clear button will be shown or hidden automatically.
+ *
+ * @param [in] obj the entry widget object
+ * @param [in] disable EINA_TRUE : the clear button will be hidden always
+ * EINA_FALSE : the clear button will be shown or hidden automatically
+ *
+ */
+EXPORT_API void ea_editfield_clear_button_disabled_set(Evas_Object *obj, Eina_Bool disable);
+
+/**
+ * @brief Get the disabled state of the clear button.
+ *
+ * @details Get the disabled state of clear button. It was seted by ea_editfield_clear_button_disabled_set.
+ * If @return is EINA_TRUE, the clear button was hidden always.
+ * If @return is EINA_FALSE, the clear button will be shown or hidden automatically.
+ *
+ * @see ea_editfield_clear_button_disabled_set()
+ *
+ * @param [in] obj the entry widget object
+ *
+ * @return return the disabled state of the clear button
+ *
+ */
+EXPORT_API Eina_Bool ea_editfield_clear_button_disabled_get(Evas_Object *obj);
+
+/**
* @}
*/
#include "efl_assist.h"
#include "efl_assist_private.h"
+const char *EA_EF_KEY_DATA = "_ea_ef_key_data";
+
+typedef struct _Ea_Editfield_Data
+{
+ Eina_Bool clear_btn_disabled;
+} Ea_Editfield_Data;
+
static void _editfield_changed_cb(void *data, Evas_Object *obj, void *event_info)
{
- if (elm_object_part_content_get(obj, "elm.swallow.clear"))
+ Ea_Editfield_Data *eed;
+
+ eed = (Ea_Editfield_Data *)evas_object_data_get(obj, EA_EF_KEY_DATA);
+ if (eed && !(eed->clear_btn_disabled)
+ && elm_object_part_content_get(obj, "elm.swallow.clear"))
{
if (elm_object_focus_get(obj))
{
static void _editfield_focused_cb(void *data, Evas_Object *obj, void *event_info)
{
- if (elm_object_part_content_get(obj, "elm.swallow.clear"))
+ Ea_Editfield_Data *eed;
+
+ eed = (Ea_Editfield_Data *)evas_object_data_get(obj, EA_EF_KEY_DATA);
+ if (eed && !(eed->clear_btn_disabled)
+ && elm_object_part_content_get(obj, "elm.swallow.clear"))
{
if (!elm_entry_is_empty(obj))
elm_object_signal_emit(obj, "elm,state,clear,visible", "");
static void _editfield_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
{
- if (elm_object_part_content_get(obj, "elm.swallow.clear"))
+ Ea_Editfield_Data *eed;
+
+ eed = (Ea_Editfield_Data *)evas_object_data_get(obj, EA_EF_KEY_DATA);
+ if (eed && !(eed->clear_btn_disabled)
+ && elm_object_part_content_get(obj, "elm.swallow.clear"))
elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
elm_object_signal_emit(obj, "elm,state,focus,off", "");
}
static void _editfield_searchbar_changed_cb(void *data, Evas_Object *obj, void *event_info)
{
- if (elm_object_part_content_get(obj, "elm.swallow.clear"))
+ Ea_Editfield_Data *eed;
+
+ eed = (Ea_Editfield_Data *)evas_object_data_get(obj, EA_EF_KEY_DATA);
+ if (eed && !(eed->clear_btn_disabled)
+ && elm_object_part_content_get(obj, "elm.swallow.clear"))
{
if (elm_entry_is_empty(obj))
elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
ea_editfield_add(Evas_Object *parent, Ea_Editfield_Type type)
{
Evas_Object *entry, *button;
+ Ea_Editfield_Data *eed;
entry = elm_entry_add(parent);
evas_object_smart_callback_add(entry, "unfocused", _editfield_unfocused_cb, NULL);
}
+ eed = calloc(1, sizeof(Ea_Editfield_Data));
+ eed->clear_btn_disabled = EINA_FALSE;
+ evas_object_data_set(entry, EA_EF_KEY_DATA, eed);
return entry;
}
+
+EXPORT_API void
+ea_editfield_clear_button_disabled_set(Evas_Object *obj, Eina_Bool disable)
+{
+ Ea_Editfield_Data *eed;
+
+ eed = evas_object_data_get(obj, EA_EF_KEY_DATA);
+ if (eed)
+ {
+ eed->clear_btn_disabled = !!disable;
+ if (eed->clear_btn_disabled)
+ elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
+ }
+}
+
+EXPORT_API Eina_Bool
+ea_editfield_clear_button_disabled_get(Evas_Object *obj)
+{
+ Ea_Editfield_Data *eed;
+
+ if (!obj)
+ return EINA_FALSE;
+ eed = evas_object_data_get(obj, EA_EF_KEY_DATA);
+ if (!eed)
+ return EINA_FALSE;
+
+ return eed->clear_btn_disabled;
+}