diff --git a/legacy/elementary/src/bin/test_entry.c b/legacy/elementary/src/bin/test_entry.c
index 3115b0f0cd..7151e58a59 100644
--- a/legacy/elementary/src/bin/test_entry.c
+++ b/legacy/elementary/src/bin/test_entry.c
@@ -76,7 +76,7 @@ test_entry(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
evas_object_show(bx);
en = elm_entry_add(win);
- elm_entry_line_wrap_set(en, 0);
+ elm_entry_line_wrap_set(en, ELM_WRAP_NONE);
snprintf(buf, sizeof(buf),
"This is an entry widget in this window that
"
"uses markup like this> for styling and
"
@@ -1256,7 +1256,7 @@ test_entry4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
evas_object_show(en);
en = elm_entry_add(win);
- elm_entry_line_wrap_set(en, 0);
+ elm_entry_line_wrap_set(en, ELM_WRAP_NONE);
elm_entry_entry_set(en,
"This is an entry widget
"
"that uses markup
"
@@ -1311,7 +1311,7 @@ test_entry5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
evas_object_show(bx);
en = elm_scrolled_entry_add(win);
- elm_scrolled_entry_line_char_wrap_set(en, 1);
+ elm_scrolled_entry_line_wrap_set(en, ELM_WRAP_CHAR);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_scrolled_entry_entry_set(en,
diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in
index 77cbed0fbb..56fbc64046 100644
--- a/legacy/elementary/src/lib/Elementary.h.in
+++ b/legacy/elementary/src/lib/Elementary.h.in
@@ -199,6 +199,19 @@ extern "C" {
ELM_TEXT_FORMAT_MARKUP_UTF8
} Elm_Text_Format;
+ /**
+ * Line wrapping types.
+ */
+ typedef enum _Elm_Wrap_Type
+ {
+ ELM_WRAP_NONE = 0, /**< No wrap - value is zero */
+ ELM_WRAP_CHAR, /**< Char wrap - wrap between graphmes */
+ ELM_WRAP_WORD, /**< Word wrap - wrap in allowed wrapping points (as defined in the unicode standard) */
+ ELM_WRAP_MIXED, /**< Mixed wrap - Word wrap, and if that fails, char wrap. */
+ ELM_WRAP_LAST = ELM_WRAP_MIXED
+ } Elm_Wrap_Type;
+
+
/**
* Called back when a widget's tooltip is activated and needs content.
* @param data user-data given to elm_object_tooltip_content_cb_set()
@@ -838,8 +851,8 @@ extern "C" {
EAPI Evas_Object *elm_label_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_label_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
EAPI const char *elm_label_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_label_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_label_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
+ EAPI Elm_Wrap_Type elm_label_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_label_wrap_width_set(Evas_Object *obj, Evas_Coord w) EINA_ARG_NONNULL(1);
EAPI Evas_Coord elm_label_wrap_width_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_label_wrap_height_set(Evas_Object *obj, Evas_Coord h) EINA_ARG_NONNULL(1);
@@ -1227,8 +1240,7 @@ extern "C" {
EAPI Eina_Bool elm_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI const char *elm_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
- EAPI void elm_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
- EAPI void elm_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
+ EAPI void elm_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
EAPI void elm_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -2439,8 +2451,7 @@ extern "C" {
EAPI Eina_Bool elm_scrolled_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI const char *elm_scrolled_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_scrolled_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
+ EAPI void elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
EAPI void elm_scrolled_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_scrolled_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_scrolled_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1);
diff --git a/legacy/elementary/src/lib/elc_fileselector.c b/legacy/elementary/src/lib/elc_fileselector.c
index 1bff969293..e38ec387db 100644
--- a/legacy/elementary/src/lib/elc_fileselector.c
+++ b/legacy/elementary/src/lib/elc_fileselector.c
@@ -654,7 +654,7 @@ elm_fileselector_add(Evas_Object *parent)
elm_widget_mirrored_automatic_set(en, EINA_FALSE);
elm_scrolled_entry_editable_set(en, EINA_FALSE);
elm_scrolled_entry_single_line_set(en, EINA_TRUE);
- elm_scrolled_entry_line_char_wrap_set(en, EINA_TRUE);
+ elm_scrolled_entry_line_wrap_set(en, ELM_WRAP_CHAR);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
@@ -668,7 +668,7 @@ elm_fileselector_add(Evas_Object *parent)
elm_widget_mirrored_automatic_set(en, EINA_FALSE);
elm_scrolled_entry_editable_set(en, EINA_TRUE);
elm_scrolled_entry_single_line_set(en, EINA_TRUE);
- elm_scrolled_entry_line_char_wrap_set(en, EINA_TRUE);
+ elm_scrolled_entry_line_wrap_set(en, ELM_WRAP_CHAR);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
diff --git a/legacy/elementary/src/lib/elc_scrolled_entry.c b/legacy/elementary/src/lib/elc_scrolled_entry.c
index 65c7d78df5..c54036c13f 100644
--- a/legacy/elementary/src/lib/elc_scrolled_entry.c
+++ b/legacy/elementary/src/lib/elc_scrolled_entry.c
@@ -821,14 +821,14 @@ elm_scrolled_entry_entry_insert(Evas_Object *obj, const char *entry)
* See also elm_scrolled_entry_line_char_wrap_set().
*
* @param obj The scrolled entry object
- * @param wrap If true, the scrolled entry will be wrapped once it reaches the end
+ * @param wrap wrap according to Elm_Wrap_Type
* of the object. Wrapping will occur at the end of the word before the end of the
* object.
*
* @ingroup Scrolled_Entry
*/
EAPI void
-elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap)
+elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
@@ -836,27 +836,6 @@ elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap)
elm_entry_line_wrap_set(wd->entry, wrap);
}
-/**
- * This enables character line wrapping in the scrolled entry object. It is the opposite
- * of elm_scrolled_entry_single_line_set(). Additionally, setting this disables
- * word line wrapping.
- * See also elm_scrolled_entry_line_wrap_set().
- *
- * @param obj The scrolled entry object
- * @param wrap If true, the scrolled entry will be wrapped once it reaches the end
- * of the object. Wrapping will occur immediately upon reaching the end of the object.
- *
- * @ingroup Scrolled_Entry
- */
-EAPI void
-elm_scrolled_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap)
-{
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
- if (!wd) return;
- elm_entry_line_char_wrap_set(wd->entry, wrap);
-}
-
/**
* This sets the editable attribute of the scrolled entry.
*
diff --git a/legacy/elementary/src/lib/elm_entry.c b/legacy/elementary/src/lib/elm_entry.c
index e1c8eff313..4635cebdc6 100644
--- a/legacy/elementary/src/lib/elm_entry.c
+++ b/legacy/elementary/src/lib/elm_entry.c
@@ -122,9 +122,8 @@ struct _Widget_Data
Ecore_Job *hovdeljob;
Mod_Api *api; // module api if supplied
int cursor_pos;
+ Elm_Wrap_Type linewrap;
Eina_Bool changed : 1;
- Eina_Bool linewrap : 1;
- Eina_Bool char_linewrap : 1;
Eina_Bool single_line : 1;
Eina_Bool password : 1;
Eina_Bool editable : 1;
@@ -617,7 +616,7 @@ _sizing_eval(Evas_Object *obj)
Evas_Coord minw = -1, minh = -1;
Evas_Coord resw, resh;
if (!wd) return;
- if ((wd->linewrap) || (wd->char_linewrap))
+ if (wd->linewrap)
{
evas_object_geometry_get(wd->ent, NULL, NULL, &resw, &resh);
if ((resw == wd->lastw) && (!wd->changed)) return;
@@ -738,7 +737,7 @@ _resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event
{
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
- if ((wd->linewrap) || (wd->char_linewrap))
+ if (wd->linewrap)
{
_sizing_eval(data);
}
@@ -1083,9 +1082,18 @@ _getbase(Evas_Object *obj)
if (wd->single_line) return "base-single";
else
{
- if (wd->linewrap) return "base";
- else if (wd->char_linewrap) return "base-charwrap";
- else return "base-nowrap";
+ switch (wd->linewrap)
+ {
+ case ELM_WRAP_CHAR:
+ return "base-charwrap";
+ case ELM_WRAP_WORD:
+ case ELM_WRAP_MIXED:
+ /* FIXME: separate mixed and word. */
+ return "base";
+ case ELM_WRAP_NONE:
+ default:
+ return "base-nowrap";
+ }
}
}
}
@@ -1097,9 +1105,18 @@ _getbase(Evas_Object *obj)
if (wd->single_line) return "base-single-noedit";
else
{
- if (wd->linewrap) return "base-noedit";
- else if (wd->char_linewrap) return "base-noedit-charwrap";
- else return "base-nowrap-noedit";
+ switch (wd->linewrap)
+ {
+ case ELM_WRAP_CHAR:
+ return "base-noedit-charwrap";
+ case ELM_WRAP_WORD:
+ case ELM_WRAP_MIXED:
+ /* FIXME: separate mixed and word. */
+ return "base-noedit";
+ case ELM_WRAP_NONE:
+ default:
+ return "base-nowrap-noedit";
+ }
}
}
}
@@ -1575,8 +1592,7 @@ elm_entry_add(Evas_Object *parent)
elm_widget_can_focus_set(obj, EINA_TRUE);
elm_widget_highlight_ignore_set(obj, EINA_TRUE);
- wd->linewrap = EINA_TRUE;
- wd->char_linewrap= EINA_FALSE;
+ wd->linewrap = ELM_WRAP_WORD;
wd->editable = EINA_TRUE;
wd->disabled = EINA_FALSE;
wd->context_menu = EINA_TRUE;
@@ -1686,8 +1702,7 @@ elm_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line)
if (!wd) return;
if (wd->single_line == single_line) return;
wd->single_line = single_line;
- wd->linewrap = EINA_FALSE;
- wd->char_linewrap = EINA_FALSE;
+ wd->linewrap = ELM_WRAP_NONE;
elm_entry_cnp_textonly_set(obj, EINA_TRUE);
_theme_hook(obj);
}
@@ -1729,8 +1744,7 @@ elm_entry_password_set(Evas_Object *obj, Eina_Bool password)
if (wd->password == password) return;
wd->password = password;
wd->single_line = EINA_TRUE;
- wd->linewrap = EINA_FALSE;
- wd->char_linewrap = EINA_FALSE;
+ wd->linewrap = ELM_WRAP_NONE;
_theme_hook(obj);
}
@@ -1883,7 +1897,6 @@ elm_entry_entry_insert(Evas_Object *obj, const char *entry)
* This enables word line wrapping in the entry object. It is the opposite
* of elm_entry_single_line_set(). Additionally, setting this disables
* character line wrapping.
- * See also elm_entry_line_char_wrap_set().
*
* @param obj The entry object
* @param wrap If true, the entry will be wrapped once it reaches the end
@@ -1893,40 +1906,14 @@ elm_entry_entry_insert(Evas_Object *obj, const char *entry)
* @ingroup Entry
*/
EAPI void
-elm_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap)
+elm_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
if (wd->linewrap == wrap) return;
- wd->linewrap = wrap;
- if(wd->linewrap)
- wd->char_linewrap = EINA_FALSE;
- _theme_hook(obj);
-}
-/**
- * This enables character line wrapping in the entry object. It is the opposite
- * of elm_entry_single_line_set(). Additionally, setting this disables
- * word line wrapping.
- * See also elm_entry_line_wrap_set().
- *
- * @param obj The entry object
- * @param wrap If true, the entry will be wrapped once it reaches the end
- * of the object. Wrapping will occur immediately upon reaching the end of the object.
- *
- * @ingroup Entry
- */
-EAPI void
-elm_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap)
-{
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
- if (!wd) return;
- if (wd->char_linewrap == wrap) return;
- wd->char_linewrap = wrap;
- if(wd->char_linewrap)
- wd->linewrap = EINA_FALSE;
+ wd->linewrap = wrap;
_theme_hook(obj);
}
diff --git a/legacy/elementary/src/lib/elm_label.c b/legacy/elementary/src/lib/elm_label.c
index 499c60d297..fe30fb200d 100644
--- a/legacy/elementary/src/lib/elm_label.c
+++ b/legacy/elementary/src/lib/elm_label.c
@@ -729,12 +729,14 @@ elm_label_label_get(const Evas_Object *obj)
/**
* Set the wrapping behavior of the label
*
+ * FIXME: currently all types wrap the same way (as defined in theme).
+ *
* @param obj The label object
* @param wrap To wrap text or not
* @ingroup Label
*/
EAPI void
-elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap)
+elm_label_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
@@ -754,10 +756,10 @@ elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap)
* Get the wrapping behavior of the label
*
* @param obj The label object
- * @return To wrap text or not
+ * @return Wrap type
* @ingroup Label
*/
-EAPI Eina_Bool
+EAPI Elm_Wrap_Type
elm_label_line_wrap_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;