Index: src/bin/test.c
===================================================================
--- src/bin/test.c	(revision 70248)
+++ src/bin/test.c	(working copy)
@@ -44,6 +44,7 @@ void test_layout2(void *data, Evas_Object *obj, vo
 void test_hover(void *data, Evas_Object *obj, void *event_info);
 void test_hover2(void *data, Evas_Object *obj, void *event_info);
 void test_entry(void *data, Evas_Object *obj, void *event_info);
+void test_entry_style_user(void *data, Evas_Object *obj, void *event_info);
 void test_entry_scrolled(void *data, Evas_Object *obj, void *event_info);
 void test_entry3(void *data, Evas_Object *obj, void *event_info);
 void test_entry4(void *data, Evas_Object *obj, void *event_info);
@@ -483,6 +484,7 @@ add_tests:
 
    //------------------------------//
    ADD_TEST(NULL, "Entries", "Entry", test_entry);
+   ADD_TEST(NULL, "Entries", "Entry Style", test_entry_style_user);
    ADD_TEST(NULL, "Entries", "Entry Scrolled", test_entry_scrolled);
    ADD_TEST(NULL, "Entries", "Entry 3", test_entry3);
    ADD_TEST(NULL, "Entries", "Entry 4", test_entry4);
Index: src/bin/test_entry.c
===================================================================
--- src/bin/test_entry.c	(revision 70248)
+++ src/bin/test_entry.c	(working copy)
@@ -703,6 +703,38 @@ my_ent_bt_pas(void *data, Evas_Object *obj __UNUSE
 }
 
 void
+test_entry_style_user(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Evas_Object *win, *bx, *en;
+
+   win = elm_win_util_standard_add("Entry", "Entry");
+   elm_win_autodel_set(win, EINA_TRUE);
+   evas_object_resize(win, 300, 300);
+
+   bx = elm_box_add(win);
+   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_win_resize_object_add(win, bx);
+   evas_object_show(bx);
+
+
+   en = elm_entry_add(win);
+   elm_entry_line_wrap_set(en, ELM_WRAP_MIXED);
+
+   elm_entry_text_style_user_push(en, "DEFAULT='font_size=40 color=#FF0000'");
+   elm_object_text_set(en, "Testing Text");
+
+   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_box_pack_end(bx, en);
+   evas_object_resize(en, 200, 200);
+   evas_object_show(en);
+
+   elm_object_focus_set(en, EINA_TRUE);
+   evas_object_show(win);
+}
+
+
+void
 test_entry3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *win, *bx, *bx2, *bt, *en;
Index: src/lib/elm_entry.h
===================================================================
--- src/lib/elm_entry.h	(revision 70248)
+++ src/lib/elm_entry.h	(working copy)
@@ -456,6 +456,36 @@ typedef Edje_Entry_Change_Info Elm_Entry_Change_In
 EAPI Evas_Object       *elm_entry_add(Evas_Object *parent);
 
 /**
+ * Push the style to the top of user style stack.
+ * If there is styles in the user style stack, the properties in the top style
+ * of user style stack will replace the properties in current theme.
+ * The input style is specified in format tag='property=value' (i.e. DEFAULT='font=Sans font_size=60'hilight=' + font_weight=Bold').
+ *
+ * @param obj The entry object
+ * @param style The style user to push
+ */
+EAPI void      elm_entry_text_style_user_push(Evas_Object *obj, const char *style);
+
+/**
+ * Remove the style in the top of user style stack.
+ *
+ * @param  obj The entry object
+ *
+ * @see elm_entry_text_style_user_push()
+ */
+EAPI void     elm_entry_text_style_user_pop(Evas_Object *obj);
+
+/**
+ * Retrieve the style on the top of user style stack.
+ *
+ * @param obj The entry object
+ * @return style on the top of user style stack if exist, otherwise NULL.
+ *
+ * @see elm_entry_text_style_user_push()
+ */
+EAPI const char*      elm_entry_text_style_user_peek(Evas_Object *obj);
+
+/**
  * Sets the entry to single line mode.
  *
  * In single line mode, entries don't ever wrap when the text reaches the
Index: src/lib/elm_entry.c
===================================================================
--- src/lib/elm_entry.c	(revision 70248)
+++ src/lib/elm_entry.c	(working copy)
@@ -2551,6 +2551,33 @@ elm_entry_add(Evas_Object *parent)
 }
 
 EAPI void
+elm_entry_text_style_user_push(Evas_Object *obj, const char *style)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   edje_object_part_text_style_user_push(wd->ent, "elm.text", style);
+}
+
+EAPI void
+elm_entry_text_style_user_pop(Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   edje_object_part_text_style_user_pop(wd->ent, "elm.text");
+}
+
+EAPI const char*
+elm_entry_text_style_user_peek(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_text_style_user_peek(wd->ent, "elm.text");
+}
+
+EAPI void
 elm_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
