jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3271ec8d18f715299dbf693c06d94cf08f2c8dc7

commit 3271ec8d18f715299dbf693c06d94cf08f2c8dc7
Author: Jinyong Park <j4939.p...@samsung.com>
Date:   Fri Jul 1 15:09:42 2016 +0900

    theme: return enum from elm_widget_style_set instead of bool
    
    Summary:
    if trying to apply incorrect theme, widget apply default theme and return 
TRUE.
    so there is no way to check it really apply correct theme.
    To resolve this problem, _elm_theme_set return three type enum
    
    * related history : 4ca3ef45146e05908a13d1010909abeba9693ad6
    * elm_object_style_set is public api, so I didn't change it.
    * typedef name [ Theme_Apply ] is temporarily, please suggest better one.
    
    @fix
    
    Reviewers: singh.amitesh, herb, Hermet, cedric, jpeg, raster
    
    Subscribers: cedric, jpeg
    
    Differential Revision: https://phab.enlightenment.org/D4073
---
 src/lib/elementary/efl_ui_flip.c             |  8 ++++----
 src/lib/elementary/efl_ui_grid.c             |  8 ++++----
 src/lib/elementary/efl_ui_image.c            |  8 ++++----
 src/lib/elementary/efl_ui_nstate.c           |  8 ++++----
 src/lib/elementary/efl_ui_text.c             | 10 +++++-----
 src/lib/elementary/efl_ui_win.c              | 28 ++++++++++++++++------------
 src/lib/elementary/elc_combobox.c            | 10 +++++-----
 src/lib/elementary/elc_ctxpopup.c            |  8 ++++----
 src/lib/elementary/elc_fileselector.c        |  8 ++++----
 src/lib/elementary/elc_fileselector_button.c | 10 +++++-----
 src/lib/elementary/elc_fileselector_entry.c  | 10 +++++-----
 src/lib/elementary/elc_hoversel.c            | 10 +++++-----
 src/lib/elementary/elc_multibuttonentry.c    |  8 ++++----
 src/lib/elementary/elc_naviframe.c           |  4 ++--
 src/lib/elementary/elc_player.c              |  8 ++++----
 src/lib/elementary/elc_popup.c               |  4 ++--
 src/lib/elementary/elm_actionslider.c        | 10 +++++-----
 src/lib/elementary/elm_box.c                 | 10 +++++-----
 src/lib/elementary/elm_button.c              |  8 ++++----
 src/lib/elementary/elm_calendar.c            |  8 ++++----
 src/lib/elementary/elm_check.c               | 10 +++++-----
 src/lib/elementary/elm_clock.c               |  8 ++++----
 src/lib/elementary/elm_colorselector.c       | 10 +++++-----
 src/lib/elementary/elm_conform.c             |  8 ++++----
 src/lib/elementary/elm_datetime.c            | 12 ++++++------
 src/lib/elementary/elm_dayselector.c         |  8 ++++----
 src/lib/elementary/elm_diskselector.c        |  8 ++++----
 src/lib/elementary/elm_entry.c               | 12 ++++++------
 src/lib/elementary/elm_flipselector.c        | 10 +++++-----
 src/lib/elementary/elm_gengrid.c             |  8 ++++----
 src/lib/elementary/elm_genlist.c             |  8 ++++----
 src/lib/elementary/elm_grid.c                |  8 ++++----
 src/lib/elementary/elm_hover.c               |  8 ++++----
 src/lib/elementary/elm_icon.c                |  8 ++++----
 src/lib/elementary/elm_index.c               |  8 ++++----
 src/lib/elementary/elm_label.c               |  8 ++++----
 src/lib/elementary/elm_layout.c              | 26 ++++++++++++++++----------
 src/lib/elementary/elm_list.c                |  8 ++++----
 src/lib/elementary/elm_main.c                |  4 +++-
 src/lib/elementary/elm_map.c                 | 10 +++++-----
 src/lib/elementary/elm_mapbuf.c              |  8 ++++----
 src/lib/elementary/elm_menu.c                |  8 ++++----
 src/lib/elementary/elm_notify.c              |  8 ++++----
 src/lib/elementary/elm_panel.c               | 10 +++++-----
 src/lib/elementary/elm_panes.c               |  8 ++++----
 src/lib/elementary/elm_photo.c               |  8 ++++----
 src/lib/elementary/elm_photocam.c            |  8 ++++----
 src/lib/elementary/elm_plug.c                |  8 ++++----
 src/lib/elementary/elm_priv.h                |  4 ++--
 src/lib/elementary/elm_progressbar.c         | 10 +++++-----
 src/lib/elementary/elm_radio.c               | 10 +++++-----
 src/lib/elementary/elm_route.c               |  8 ++++----
 src/lib/elementary/elm_scroller.c            |  8 ++++----
 src/lib/elementary/elm_segment_control.c     |  8 ++++----
 src/lib/elementary/elm_separator.c           |  8 ++++----
 src/lib/elementary/elm_slider.c              | 10 +++++-----
 src/lib/elementary/elm_spinner.c             |  6 +++---
 src/lib/elementary/elm_table.c               |  8 ++++----
 src/lib/elementary/elm_theme.c               | 13 ++++++-------
 src/lib/elementary/elm_toolbar.c             | 12 ++++++------
 src/lib/elementary/elm_widget.c              | 25 +++++++++++++------------
 src/lib/elementary/elm_widget.eo             | 13 ++++++++++---
 src/lib/elementary/elm_widget.h              |  6 +++---
 63 files changed, 305 insertions(+), 286 deletions(-)

diff --git a/src/lib/elementary/efl_ui_flip.c b/src/lib/elementary/efl_ui_flip.c
index 1c11d3d..78e6cb6 100644
--- a/src/lib/elementary/efl_ui_flip.c
+++ b/src/lib/elementary/efl_ui_flip.c
@@ -98,16 +98,16 @@ _sizing_eval(Evas_Object *obj)
    evas_object_size_hint_max_set(obj, maxw, maxh);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _efl_ui_flip_elm_widget_theme_apply(Eo *obj, Efl_Ui_Flip_Data *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/efl_ui_grid.c b/src/lib/elementary/efl_ui_grid.c
index 538c7fe..ffe9997 100644
--- a/src/lib/elementary/efl_ui_grid.c
+++ b/src/lib/elementary/efl_ui_grid.c
@@ -111,16 +111,16 @@ _mirrored_set(Evas_Object *obj, Eina_Bool rtl)
    evas_object_table_mirrored_set(wd->resize_obj, rtl);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _efl_ui_grid_elm_widget_theme_apply(Eo *obj, Efl_Ui_Grid_Data *pd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/efl_ui_image.c 
b/src/lib/elementary/efl_ui_image.c
index 6578c20..252b574 100644
--- a/src/lib/elementary/efl_ui_image.c
+++ b/src/lib/elementary/efl_ui_image.c
@@ -728,20 +728,20 @@ _efl_ui_image_efl_canvas_group_group_clip_unset(Eo *obj, 
Efl_Ui_Image_Data *sd)
    if (sd->prev_img) evas_object_clip_unset(sd->prev_img);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _efl_ui_image_elm_widget_theme_apply(Eo *obj, Efl_Ui_Image_Data *sd 
EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    if (sd->stdicon)
      _elm_theme_object_icon_set(obj, sd->stdicon, elm_widget_style_get(obj));
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _efl_ui_image_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static Eina_Bool
diff --git a/src/lib/elementary/efl_ui_nstate.c 
b/src/lib/elementary/efl_ui_nstate.c
index ccd60c6..135b3ff 100644
--- a/src/lib/elementary/efl_ui_nstate.c
+++ b/src/lib/elementary/efl_ui_nstate.c
@@ -134,17 +134,17 @@ _efl_ui_nstate_value_set(Eo *obj, Efl_Ui_Nstate_Data *pd, 
int state)
    _state_active(obj, pd);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _efl_ui_nstate_elm_widget_theme_apply(Eo *obj, Efl_Ui_Nstate_Data *pd)
 {
-   Eina_Bool int_ret;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _state_active(obj, pd);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static Eina_Bool
diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c
index 3d62548..dbf4bda 100644
--- a/src/lib/elementary/efl_ui_text.c
+++ b/src/lib/elementary/efl_ui_text.c
@@ -956,7 +956,7 @@ _efl_ui_text_background_switch(Evas_Object *from_edje, 
Evas_Object *to_edje)
 
 /* we can't issue the layout's theming code here, cause it assumes an
  * unique edje object, always */
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _efl_ui_text_elm_widget_theme_apply(Eo *obj, Efl_Ui_Text_Data *sd)
 {
    const char *str;
@@ -965,9 +965,9 @@ _efl_ui_text_elm_widget_theme_apply(Eo *obj, 
Efl_Ui_Text_Data *sd)
 
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    evas_event_freeze(evas_object_evas_get(obj));
 
@@ -1039,7 +1039,7 @@ _efl_ui_text_elm_widget_theme_apply(Eo *obj, 
Efl_Ui_Text_Data *sd)
 
    if (sd->scroll)
      {
-        Eina_Bool ok = EINA_FALSE;
+        Elm_Theme_Apply ok = ELM_THEME_APPLY_FAILED;
 
         elm_interface_scrollable_mirrored_set(obj, 
elm_widget_mirrored_get(obj));
 
@@ -1086,7 +1086,7 @@ _efl_ui_text_elm_widget_theme_apply(Eo *obj, 
Efl_Ui_Text_Data *sd)
 
    evas_object_unref(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 0e4e023..0293ea9 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -332,7 +332,7 @@ _elm_win_on_resize_obj_changed_size_hints(void *data,
                                           void *event_info);
 static void
 _elm_win_img_callbacks_del(Evas_Object *obj, Evas_Object *imgobj);
-static Eina_Bool _elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd);
+static Elm_Theme_Apply _elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd);
 static void _elm_win_frame_add(Efl_Ui_Win_Data *sd, const char *style);
 static void _elm_win_frame_del(Efl_Ui_Win_Data *sd);
 
@@ -5562,15 +5562,16 @@ _efl_ui_win_focus_highlight_enabled_get(Eo *obj 
EINA_UNUSED, Efl_Ui_Win_Data *sd
    return sd->focus_highlight.enabled;
 }
 
-static Eina_Bool
+static Elm_Theme_Apply
 _elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd)
 {
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    Eina_Bool ret = EINA_FALSE;
    const char *s;
 
-   if (!_elm_theme_object_set(obj, sd->edje, "win", "base",
-                               elm_widget_style_get(obj)))
-     return EINA_FALSE;
+   int_ret = _elm_theme_object_set(obj, sd->edje, "win", "base",
+                                   elm_widget_style_get(obj));
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    edje_object_mirrored_set(sd->edje, elm_widget_mirrored_get(obj));
    edje_object_scale_set(sd->edje,
@@ -5579,6 +5580,8 @@ _elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd)
    eo_event_callback_call(obj, EFL_UI_WIN_EVENT_THEME_CHANGED, NULL);
    ret = elm_obj_widget_disable(obj);
 
+   if (!ret) int_ret = ELM_THEME_APPLY_FAILED;
+
    if (!sd->theme_alpha && !sd->application_alpha)
      {
         s = edje_object_data_get(sd->edje, "alpha");
@@ -5593,22 +5596,23 @@ _elm_win_theme_internal(Eo *obj, Efl_Ui_Win_Data *sd)
           }
      }
 
-   return ret;
+   return int_ret;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _efl_ui_win_elm_widget_theme_apply(Eo *obj, Efl_Ui_Win_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    sd->focus_highlight.theme_changed = EINA_TRUE;
-   if (!_elm_win_theme_internal(obj, sd))
-     return EINA_FALSE;
+
+   int_ret = _elm_win_theme_internal(obj, sd) & int_ret;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
    _elm_win_focus_highlight_reconfigure_job_start(sd);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elc_combobox.c 
b/src/lib/elementary/elc_combobox.c
index 89e1538..07d4e20 100644
--- a/src/lib/elementary/elc_combobox.c
+++ b/src/lib/elementary/elc_combobox.c
@@ -54,15 +54,15 @@ _elm_combobox_elm_widget_translate(Eo *obj EINA_UNUSED, 
Elm_Combobox_Data *sd)
    return EINA_TRUE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_combobox_elm_widget_theme_apply(Eo *obj, Elm_Combobox_Data *sd)
 {
    const char *style;
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    Eina_Bool mirrored;
    char buf[128];
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    style = eina_stringshare_add(elm_widget_style_get(obj));
 
@@ -72,7 +72,7 @@ _elm_combobox_elm_widget_theme_apply(Eo *obj, 
Elm_Combobox_Data *sd)
    eina_stringshare_replace(&(wd->style), buf);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    eina_stringshare_replace(&(wd->style), style);
 
@@ -87,7 +87,7 @@ _elm_combobox_elm_widget_theme_apply(Eo *obj, 
Elm_Combobox_Data *sd)
 
    elm_combobox_hover_end(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elc_ctxpopup.c 
b/src/lib/elementary/elc_ctxpopup.c
index 7d3a8b9..29cc142 100644
--- a/src/lib/elementary/elc_ctxpopup.c
+++ b/src/lib/elementary/elc_ctxpopup.c
@@ -745,13 +745,13 @@ _on_content_resized(void *data,
 }
 
 //FIXME: lost the content size when theme hook is called.
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_ctxpopup_elm_widget_theme_apply(Eo *obj, Elm_Ctxpopup_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    elm_widget_theme_object_set
      (obj, sd->bg, "ctxpopup", "bg", elm_widget_style_get(obj));
@@ -770,7 +770,7 @@ _elm_ctxpopup_elm_widget_theme_apply(Eo *obj, 
Elm_Ctxpopup_Data *sd)
 
    if (sd->visible) elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 /* kind of a big and tricky override here: an internal box will hold
diff --git a/src/lib/elementary/elc_fileselector.c 
b/src/lib/elementary/elc_fileselector.c
index 88fa320..21daa8b 100644
--- a/src/lib/elementary/elc_fileselector.c
+++ b/src/lib/elementary/elc_fileselector.c
@@ -163,16 +163,16 @@ _model_str_property_set(Efl_Model *model, const char 
*property_name, const char
    eina_value_flush(&v);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_fileselector_elm_widget_theme_apply(Eo *obj, Elm_Fileselector_Data *sd)
 {
    const char *style;
    const char *data;
    char buf[1024];
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    style = elm_widget_style_get(obj);
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
@@ -205,7 +205,7 @@ _elm_fileselector_elm_widget_theme_apply(Eo *obj, 
Elm_Fileselector_Data *sd)
         elm_widget_style_set(sd->ok_button, buf);
      }
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static Eina_Bool
diff --git a/src/lib/elementary/elc_fileselector_button.c 
b/src/lib/elementary/elc_fileselector_button.c
index abf4cb3..38757fe 100644
--- a/src/lib/elementary/elc_fileselector_button.c
+++ b/src/lib/elementary/elc_fileselector_button.c
@@ -40,15 +40,15 @@ _model_free_eo_cb(void *eo)
    eo_unref(eo);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_fileselector_button_elm_widget_theme_apply(Eo *obj, 
Elm_Fileselector_Button_Data *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    char buf[4096];
    const char *style;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    style = eina_stringshare_add(elm_widget_style_get(obj));
 
@@ -58,13 +58,13 @@ _elm_fileselector_button_elm_widget_theme_apply(Eo *obj, 
Elm_Fileselector_Button
    eina_stringshare_replace(&(wd->style), buf);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    eina_stringshare_replace(&(wd->style), style);
 
    eina_stringshare_del(style);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elc_fileselector_entry.c 
b/src/lib/elementary/elc_fileselector_entry.c
index 09d6dab..616c839 100644
--- a/src/lib/elementary/elc_fileselector_entry.c
+++ b/src/lib/elementary/elc_fileselector_entry.c
@@ -202,17 +202,17 @@ _elm_fileselector_entry_elm_widget_focus_next(Eo *obj 
EINA_UNUSED, Elm_Fileselec
    return EINA_FALSE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_fileselector_entry_elm_widget_theme_apply(Eo *obj, 
Elm_Fileselector_Entry_Data *sd)
 {
    const char *style;
    char buf[1024];
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    style = elm_widget_style_get(obj);
 
@@ -230,7 +230,7 @@ _elm_fileselector_entry_elm_widget_theme_apply(Eo *obj, 
Elm_Fileselector_Entry_D
 
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/elc_hoversel.c 
b/src/lib/elementary/elc_hoversel.c
index c82429e..20e569f 100644
--- a/src/lib/elementary/elc_hoversel.c
+++ b/src/lib/elementary/elc_hoversel.c
@@ -59,14 +59,14 @@ _elm_hoversel_elm_widget_translate(Eo *obj EINA_UNUSED, 
Elm_Hoversel_Data *sd)
    return EINA_TRUE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_hoversel_elm_widget_theme_apply(Eo *obj, Elm_Hoversel_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    Eina_List *l;
    Elm_Object_Item *eo_item;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    char buf[4096];
    const char *style;
@@ -82,7 +82,7 @@ _elm_hoversel_elm_widget_theme_apply(Eo *obj, 
Elm_Hoversel_Data *sd)
    eina_stringshare_replace(&(wd->style), buf);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    eina_stringshare_replace(&(wd->style), style);
 
@@ -106,7 +106,7 @@ _elm_hoversel_elm_widget_theme_apply(Eo *obj, 
Elm_Hoversel_Data *sd)
    eina_stringshare_del(style);
    elm_hoversel_hover_end(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elc_multibuttonentry.c 
b/src/lib/elementary/elc_multibuttonentry.c
index 9fed32a..4c18509 100644
--- a/src/lib/elementary/elc_multibuttonentry.c
+++ b/src/lib/elementary/elc_multibuttonentry.c
@@ -80,7 +80,7 @@ _format_count(int count, void *data EINA_UNUSED)
    return strdup(buf);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_multibuttonentry_elm_widget_theme_apply(Eo *obj, 
Elm_Multibuttonentry_Data *sd)
 {
    const char *str;
@@ -89,9 +89,9 @@ _elm_multibuttonentry_elm_widget_theme_apply(Eo *obj, 
Elm_Multibuttonentry_Data
    Elm_Object_Item *eo_item;
    double pad_scale;
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    str = elm_layout_data_get(obj, "horizontal_pad");
    if (str) hpad = atoi(str);
@@ -122,7 +122,7 @@ _elm_multibuttonentry_elm_widget_theme_apply(Eo *obj, 
Elm_Multibuttonentry_Data
 
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elc_naviframe.c 
b/src/lib/elementary/elc_naviframe.c
index 4809779..17f034d 100644
--- a/src/lib/elementary/elc_naviframe.c
+++ b/src/lib/elementary/elc_naviframe.c
@@ -368,7 +368,7 @@ _item_title_enabled_update(Elm_Naviframe_Item_Data *nit, 
Eina_Bool transition)
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_naviframe_elm_widget_theme_apply(Eo *obj, Elm_Naviframe_Data *sd)
 {
    Elm_Naviframe_Item_Data *it;
@@ -386,7 +386,7 @@ _elm_naviframe_elm_widget_theme_apply(Eo *obj, 
Elm_Naviframe_Data *sd)
      }
 
    elm_layout_sizing_eval(obj);
-   return EINA_TRUE;
+   return ELM_THEME_APPLY_SUCCESS;
 }
 
 static char *
diff --git a/src/lib/elementary/elc_player.c b/src/lib/elementary/elc_player.c
index e901aca..c4b6d60 100644
--- a/src/lib/elementary/elc_player.c
+++ b/src/lib/elementary/elc_player.c
@@ -199,12 +199,12 @@ _update_theme_slider(Evas_Object *obj, Evas_Object *sl, 
const char *name, const
    elm_object_disabled_set(sl, elm_widget_disabled_get(obj));
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_player_elm_widget_theme_apply(Eo *obj, Elm_Player_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _update_theme_button(obj, sd->forward, "forward");
    _update_theme_button(obj, sd->info, "info");
@@ -222,7 +222,7 @@ _elm_player_elm_widget_theme_apply(Eo *obj, Elm_Player_Data 
*sd)
    _update_theme_slider(obj, sd->vslider,  "volume", "volumeslider");
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c
index e99262c..ec476f2 100644
--- a/src/lib/elementary/elc_popup.c
+++ b/src/lib/elementary/elc_popup.c
@@ -342,7 +342,7 @@ _populate_theme_scroll(Elm_Popup_Data *sd)
    sd->theme_scroll = EINA_FALSE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_popup_elm_widget_theme_apply(Eo *obj, Elm_Popup_Data *sd)
 {
    Elm_Popup_Item_Data *it;
@@ -416,7 +416,7 @@ _elm_popup_elm_widget_theme_apply(Eo *obj, Elm_Popup_Data 
*sd)
    /* access */
    if (_elm_config->access_mode) _access_obj_process(obj, EINA_TRUE);
 
-   return EINA_TRUE;
+   return ELM_THEME_APPLY_SUCCESS;
 }
 
 static void
diff --git a/src/lib/elementary/elm_actionslider.c 
b/src/lib/elementary/elm_actionslider.c
index face984..70b0b1f 100644
--- a/src/lib/elementary/elm_actionslider.c
+++ b/src/lib/elementary/elm_actionslider.c
@@ -106,25 +106,25 @@ _mirroredness_change_eval(Evas_Object *obj)
      (wd->resize_obj, "elm.drag_button_base", 1.0 - pos, 0.5);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_actionslider_elm_widget_theme_apply(Eo *obj, Elm_Actionslider_Data *sd 
EINA_UNUSED)
 {
    Eina_Bool mirrored;
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    mirrored = elm_object_mirrored_get(obj);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    if (elm_object_mirrored_get(obj) != mirrored)
      _mirroredness_change_eval(obj);
 
    edje_object_message_signal_process(wd->resize_obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_box.c b/src/lib/elementary/elm_box.c
index c6e635c..adb080f 100644
--- a/src/lib/elementary/elm_box.c
+++ b/src/lib/elementary/elm_box.c
@@ -105,18 +105,18 @@ _elm_box_elm_widget_focus_direction(Eo *obj EINA_UNUSED, 
Elm_Box_Data *_pd EINA_
             (obj, base, items, list_data_get, degree, direction, 
direction_item, weight);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_box_elm_widget_theme_apply(Eo *obj, Elm_Box_Data *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
    evas_object_smart_calculate(wd->resize_obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_button.c b/src/lib/elementary/elm_button.c
index fd66680..3bb22fa 100644
--- a/src/lib/elementary/elm_button.c
+++ b/src/lib/elementary/elm_button.c
@@ -119,16 +119,16 @@ _icon_signal_emit(Evas_Object *obj)
 /* FIXME: replicated from elm_layout just because button's icon spot
  * is elm.swallow.content, not elm.swallow.icon. Fix that whenever we
  * can changed the theme API */
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_button_elm_widget_theme_apply(Eo *obj, Elm_Button_Data *_pd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
    _icon_signal_emit(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 /* FIXME: replicated from elm_layout just because button's icon spot
diff --git a/src/lib/elementary/elm_calendar.c 
b/src/lib/elementary/elm_calendar.c
index 405165f..85a7f28 100644
--- a/src/lib/elementary/elm_calendar.c
+++ b/src/lib/elementary/elm_calendar.c
@@ -850,18 +850,18 @@ _spinner_buttons_add(Evas_Object *obj, Elm_Calendar_Data 
*sd)
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_calendar_elm_widget_theme_apply(Eo *obj, Elm_Calendar_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _spinner_buttons_add(obj, sd);
 
    evas_object_smart_changed(obj);
-   return EINA_TRUE;
+   return int_ret;
 }
 
 /* Set correct tm_wday and tm_yday after other fields changes*/
diff --git a/src/lib/elementary/elm_check.c b/src/lib/elementary/elm_check.c
index 9b10a3f..918f9ce 100644
--- a/src/lib/elementary/elm_check.c
+++ b/src/lib/elementary/elm_check.c
@@ -164,16 +164,16 @@ _elm_check_elm_widget_event(Eo *obj, Elm_Check_Data *_pd 
EINA_UNUSED, Evas_Objec
    return EINA_TRUE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_check_elm_widget_theme_apply(Eo *obj, Elm_Check_Data *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
 
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    if (efl_ui_nstate_value_get(obj) == 0)
      elm_layout_signal_emit(obj, "elm,state,check,off", "elm");
@@ -189,7 +189,7 @@ _elm_check_elm_widget_theme_apply(Eo *obj, Elm_Check_Data 
*sd EINA_UNUSED)
 
    elm_obj_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static char *
diff --git a/src/lib/elementary/elm_clock.c b/src/lib/elementary/elm_clock.c
index 23e2a04..838269d 100644
--- a/src/lib/elementary/elm_clock.c
+++ b/src/lib/elementary/elm_clock.c
@@ -560,17 +560,17 @@ _time_update(Evas_Object *obj, Eina_Bool theme_update)
      sd->cur.ampm = -1;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_clock_elm_widget_theme_apply(Eo *obj, Elm_Clock_Data *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _time_update(obj, EINA_TRUE);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static Eina_Bool
diff --git a/src/lib/elementary/elm_colorselector.c 
b/src/lib/elementary/elm_colorselector.c
index aab7340..ea64859 100644
--- a/src/lib/elementary/elm_colorselector.c
+++ b/src/lib/elementary/elm_colorselector.c
@@ -1267,7 +1267,7 @@ _color_bars_add(Evas_Object *obj)
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_colorselector_elm_widget_theme_apply(Eo *obj, Elm_Colorselector_Data *sd)
 {
    int i;
@@ -1278,11 +1278,11 @@ _elm_colorselector_elm_widget_theme_apply(Eo *obj, 
Elm_Colorselector_Data *sd)
    unsigned int h_pad = DEFAULT_HOR_PAD;
    unsigned int v_pad = DEFAULT_VER_PAD;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-   Eina_Bool int_ret = EINA_FALSE;
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    if ((sd->mode == ELM_COLORSELECTOR_PALETTE) ||
        (sd->mode == ELM_COLORSELECTOR_ALL) ||
@@ -1358,7 +1358,7 @@ _elm_colorselector_elm_widget_theme_apply(Eo *obj, 
Elm_Colorselector_Data *sd)
      }
 
    elm_layout_sizing_eval(obj);
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_conform.c b/src/lib/elementary/elm_conform.c
index 4cc2a05..64736a2 100644
--- a/src/lib/elementary/elm_conform.c
+++ b/src/lib/elementary/elm_conform.c
@@ -571,19 +571,19 @@ _on_rotation_changed(void *data, const Eo_Event *event 
EINA_UNUSED)
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_conformant_elm_widget_theme_apply(Eo *obj, Elm_Conformant_Data *_pd 
EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _conformant_parts_swallow(obj);
 
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 // unused now - but meant to be for making sure the focused widget is always
diff --git a/src/lib/elementary/elm_datetime.c 
b/src/lib/elementary/elm_datetime.c
index 0698e1d..b1e6685 100644
--- a/src/lib/elementary/elm_datetime.c
+++ b/src/lib/elementary/elm_datetime.c
@@ -509,21 +509,21 @@ _elm_datetime_elm_layout_sizing_eval(Eo *obj, 
Elm_Datetime_Data *sd)
    evas_object_size_hint_max_set(obj, -1, -1);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_datetime_elm_widget_theme_apply(Eo *obj, Elm_Datetime_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    Datetime_Field *field;
    char buf[BUFFER_SIZE];
    unsigned int idx;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
-   if ((!dt_mod) || (!dt_mod->field_value_display)) return EINA_TRUE;
+   if ((!dt_mod) || (!dt_mod->field_value_display)) return int_ret;
 
    for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
      {
@@ -551,7 +551,7 @@ _elm_datetime_elm_widget_theme_apply(Eo *obj, 
Elm_Datetime_Data *sd)
    edje_object_message_signal_process(wd->resize_obj);
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static int
diff --git a/src/lib/elementary/elm_dayselector.c 
b/src/lib/elementary/elm_dayselector.c
index 48f84fe..8cbfb47 100644
--- a/src/lib/elementary/elm_dayselector.c
+++ b/src/lib/elementary/elm_dayselector.c
@@ -123,17 +123,17 @@ _item_location_get(Elm_Dayselector_Data *sd,
           ELM_DAYSELECTOR_MAX;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_dayselector_elm_widget_theme_apply(Eo *obj, Elm_Dayselector_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    Eina_List *l;
    char buf[1024];
    Elm_Dayselector_Item_Data *it;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    EINA_LIST_FOREACH(sd->items, l, it)
      {
@@ -149,7 +149,7 @@ _elm_dayselector_elm_widget_theme_apply(Eo *obj, 
Elm_Dayselector_Data *sd)
    _update_items(obj);
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_diskselector.c 
b/src/lib/elementary/elm_diskselector.c
index 36fbf59..c315616 100644
--- a/src/lib/elementary/elm_diskselector.c
+++ b/src/lib/elementary/elm_diskselector.c
@@ -810,18 +810,18 @@ _theme_data_get(Evas_Object *obj)
    else sd->minh = -1;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_diskselector_elm_widget_theme_apply(Eo *obj, Elm_Diskselector_Data *sd)
 {
    Eina_List *l;
    Elm_Diskselector_Item_Data *it;
    Evas_Object *blank;
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    Evas *evas;
    const char *style = elm_widget_style_get(obj);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    evas = evas_object_evas_get(obj);
    evas_event_freeze(evas);
@@ -867,7 +867,7 @@ _elm_diskselector_elm_widget_theme_apply(Eo *obj, 
Elm_Diskselector_Data *sd)
    evas_event_thaw(evas);
    evas_event_thaw_eval(evas);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c
index 4b1922a..160a3bf 100644
--- a/src/lib/elementary/elm_entry.c
+++ b/src/lib/elementary/elm_entry.c
@@ -836,18 +836,18 @@ _elm_entry_background_switch(Evas_Object *from_edje, 
Evas_Object *to_edje)
 
 /* we can't issue the layout's theming code here, cause it assumes an
  * unique edje object, always */
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_entry_elm_widget_theme_apply(Eo *obj, Elm_Entry_Data *sd)
 {
    const char *str;
    const char *t;
    const char *style = elm_widget_style_get(obj);
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    evas_event_freeze(evas_object_evas_get(obj));
 
@@ -921,7 +921,7 @@ _elm_entry_elm_widget_theme_apply(Eo *obj, Elm_Entry_Data 
*sd)
 
    if (sd->scroll)
      {
-        Eina_Bool ok = EINA_FALSE;
+        Elm_Theme_Apply ok = ELM_THEME_APPLY_FAILED;
 
         elm_interface_scrollable_mirrored_set(obj, 
elm_widget_mirrored_get(obj));
 
@@ -968,7 +968,7 @@ _elm_entry_elm_widget_theme_apply(Eo *obj, Elm_Entry_Data 
*sd)
 
    evas_object_unref(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_flipselector.c 
b/src/lib/elementary/elm_flipselector.c
index d4003c1..1084eae 100644
--- a/src/lib/elementary/elm_flipselector.c
+++ b/src/lib/elementary/elm_flipselector.c
@@ -330,16 +330,16 @@ _item_new(Evas_Object *obj,
    return eo_item;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_flipselector_elm_widget_theme_apply(Eo *obj, Elm_Flipselector_Data *sd)
 {
    const char *max_len;
 
-   Eina_Bool int_ret = EINA_FALSE;
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    max_len = edje_object_data_get(wd->resize_obj, "max_len");
    if (!max_len) sd->max_len = MAX_LEN_DEFAULT;
@@ -353,7 +353,7 @@ _elm_flipselector_elm_widget_theme_apply(Eo *obj, 
Elm_Flipselector_Data *sd)
    _update_view(obj);
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 4e50964..1bbe540 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -3771,16 +3771,16 @@ _mirrored_set(Evas_Object *obj,
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_gengrid_elm_widget_theme_apply(Eo *obj, Elm_Gengrid_Data *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 4974762..64f5542 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -3403,16 +3403,16 @@ _mirrored_set(Evas_Object *obj,
    elm_interface_scrollable_mirrored_set(obj, rtl);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_genlist_elm_widget_theme_apply(Eo *obj, Elm_Genlist_Data *sd)
 {
    Item_Block *itb;
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    Eina_List *l;
    Elm_Gen_Item *it;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    evas_event_freeze(evas_object_evas_get(obj));
    _item_cache_zero(sd);
@@ -3435,7 +3435,7 @@ _elm_genlist_elm_widget_theme_apply(Eo *obj, 
Elm_Genlist_Data *sd)
    evas_event_thaw(evas_object_evas_get(obj));
    evas_event_thaw_eval(evas_object_evas_get(obj));
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 /* FIXME: take off later. maybe this show region coords belong in the
diff --git a/src/lib/elementary/elm_grid.c b/src/lib/elementary/elm_grid.c
index d68625b..0fcf42e 100644
--- a/src/lib/elementary/elm_grid.c
+++ b/src/lib/elementary/elm_grid.c
@@ -102,17 +102,17 @@ _mirrored_set(Evas_Object *obj, Eina_Bool rtl)
    evas_object_grid_mirrored_set(wd->resize_obj, rtl);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_grid_elm_widget_theme_apply(Eo *obj, void *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c
index 729cddf..df0d934 100644
--- a/src/lib/elementary/elm_hover.c
+++ b/src/lib/elementary/elm_hover.c
@@ -290,12 +290,12 @@ _hov_show_do(Evas_Object *obj)
    }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_hover_elm_widget_theme_apply(Eo *obj, Elm_Hover_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    if (sd->smt_sub) _elm_hover_smt_sub_re_eval(obj);
 
@@ -303,7 +303,7 @@ _elm_hover_elm_widget_theme_apply(Eo *obj, Elm_Hover_Data 
*sd)
 
    if (evas_object_visible_get(obj)) _hov_show_do(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elm_icon.c b/src/lib/elementary/elm_icon.c
index 168e243..55e77ed 100644
--- a/src/lib/elementary/elm_icon.c
+++ b/src/lib/elementary/elm_icon.c
@@ -366,18 +366,18 @@ _elm_icon_efl_file_file_set(Eo *obj, Elm_Icon_Data *sd, 
const char *file, const
    return EINA_TRUE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_icon_elm_widget_theme_apply(Eo *obj, Elm_Icon_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    if (sd->stdicon)
      _elm_theme_object_icon_set(obj, sd->stdicon, elm_widget_style_get(obj));
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static Eina_Bool
diff --git a/src/lib/elementary/elm_index.c b/src/lib/elementary/elm_index.c
index ecdb7bf..665ea7f 100644
--- a/src/lib/elementary/elm_index.c
+++ b/src/lib/elementary/elm_index.c
@@ -437,13 +437,13 @@ _index_priority_change(void *data, Elm_Index_Item_Data 
*it)
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_index_elm_widget_theme_apply(Eo *obj, Elm_Index_Data *sd)
 {
    Evas_Coord minw = 0, minh = 0;
    Elm_Object_Item *eo_item;
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
    ELM_LAYOUT_DATA_GET(obj, ld);
@@ -457,7 +457,7 @@ _elm_index_elm_widget_theme_apply(Eo *obj, Elm_Index_Data 
*sd)
      eina_stringshare_replace(&ld->group, "base/vertical");
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    elm_coords_finger_size_adjust(1, &minw, 1, &minh);
    evas_object_size_hint_min_set(sd->event_rect[0], minw, minh);
@@ -519,7 +519,7 @@ _elm_index_elm_widget_theme_apply(Eo *obj, Elm_Index_Data 
*sd)
    if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
      _access_index_register(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elm_label.c b/src/lib/elementary/elm_label.c
index 67ec22f..6bd4a97 100644
--- a/src/lib/elementary/elm_label.c
+++ b/src/lib/elementary/elm_label.c
@@ -174,17 +174,17 @@ _label_slide_change(Evas_Object *obj)
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_label_elm_widget_theme_apply(Eo *obj, Elm_Label_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    evas_event_freeze(evas_object_evas_get(obj));
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _label_format_set(wd->resize_obj, sd->format);
    _label_slide_change(obj);
diff --git a/src/lib/elementary/elm_layout.c b/src/lib/elementary/elm_layout.c
index b6bfc09..65b7661 100644
--- a/src/lib/elementary/elm_layout.c
+++ b/src/lib/elementary/elm_layout.c
@@ -357,12 +357,12 @@ _elm_layout_elm_widget_disable(Eo *obj, 
Elm_Layout_Smart_Data *_pd EINA_UNUSED)
    return EINA_TRUE;
 }
 
-static Eina_Bool
+static Elm_Theme_Apply
 _elm_layout_theme_internal(Eo *obj, Elm_Layout_Smart_Data *sd)
 {
-   Eina_Bool ret = EINA_FALSE;
+   Elm_Theme_Apply ret = ELM_THEME_APPLY_FAILED;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    /* function already prints error messages, if any */
    if (!sd->file_set)
@@ -375,25 +375,28 @@ _elm_layout_theme_internal(Eo *obj, Elm_Layout_Smart_Data 
*sd)
    if (ret)
      eo_event_callback_call(obj, ELM_LAYOUT_EVENT_THEME_CHANGED, NULL);
 
-   ret = _visuals_refresh(obj, sd) && ret;
+   if (!_visuals_refresh(obj, sd))
+     ret = ELM_THEME_APPLY_FAILED;
 
    return ret;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_layout_elm_widget_theme_apply(Eo *obj, Elm_Layout_Smart_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
    /* The following lines are here to support entry design; the _theme function
     * of entry needs to call directly the widget _theme function */
    Eina_Bool enable = EINA_TRUE;
    enable = elm_obj_layout_theme_enable(obj);
-   if (!enable) return EINA_TRUE;
+   if (!enable) return int_ret;
 
-   return _elm_layout_theme_internal(obj, sd);
+   int_ret = _elm_layout_theme_internal(obj, sd) & int_ret;
+
+   return int_ret;
 }
 
 static void *
@@ -907,7 +910,10 @@ _elm_layout_theme_set(Eo *obj, Elm_Layout_Smart_Data *sd, 
const char *klass, con
    eina_stringshare_replace(&(sd->group), group);
    eina_stringshare_replace(&(wd->style), style);
 
-   return _elm_layout_theme_internal(obj, sd);
+   if (_elm_layout_theme_internal(obj, sd))
+     return EINA_TRUE;
+   else
+     return EINA_FALSE;
 }
 
 EAPI void
diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c
index 7c3a072..0c04df9 100644
--- a/src/lib/elementary/elm_list.c
+++ b/src/lib/elementary/elm_list.c
@@ -1092,15 +1092,15 @@ _mirrored_set(Evas_Object *obj,
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_list_elm_widget_theme_apply(Eo *obj, Elm_List_Data *sd)
 {
    Elm_Object_Item *eo_it;
    Eina_List *n;
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
@@ -1116,7 +1116,7 @@ _elm_list_elm_widget_theme_apply(Eo *obj, Elm_List_Data 
*sd)
 
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c
index 636d57e..53acd56 100644
--- a/src/lib/elementary/elm_main.c
+++ b/src/lib/elementary/elm_main.c
@@ -1428,7 +1428,9 @@ elm_object_style_set(Evas_Object *obj,
                      const char  *style)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
-   return elm_widget_style_set(obj, style);
+   if (elm_widget_style_set(obj, style))
+     return EINA_TRUE;
+   return EINA_FALSE;
 }
 
 EAPI Eina_Bool
diff --git a/src/lib/elementary/elm_map.c b/src/lib/elementary/elm_map.c
index 7466cc9..920ddef 100644
--- a/src/lib/elementary/elm_map.c
+++ b/src/lib/elementary/elm_map.c
@@ -3925,13 +3925,13 @@ _elm_map_pan_class_constructor(Eo_Class *klass)
 
 #include "elm_map_pan.eo.c"
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_map_elm_widget_theme_apply(Eo *obj, Elm_Map_Data *sd EINA_UNUSED)
 {
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-   Eina_Bool int_ret = EINA_FALSE;
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
 
    elm_widget_theme_object_set
@@ -3939,7 +3939,7 @@ _elm_map_elm_widget_theme_apply(Eo *obj, Elm_Map_Data *sd 
EINA_UNUSED)
 
    _sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static Eina_Bool
diff --git a/src/lib/elementary/elm_mapbuf.c b/src/lib/elementary/elm_mapbuf.c
index c6e1fa2..d3ed67e 100644
--- a/src/lib/elementary/elm_mapbuf.c
+++ b/src/lib/elementary/elm_mapbuf.c
@@ -35,16 +35,16 @@ _sizing_eval(Evas_Object *obj)
    evas_object_size_hint_max_set(obj, maxw, maxh);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_mapbuf_elm_widget_theme_apply(Eo *obj, Elm_Mapbuf_Data *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_menu.c b/src/lib/elementary/elm_menu.c
index 04e33cc..6eb5c1b 100644
--- a/src/lib/elementary/elm_menu.c
+++ b/src/lib/elementary/elm_menu.c
@@ -221,10 +221,10 @@ _sizing_eval(Evas_Object *obj)
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_menu_elm_widget_theme_apply(Eo *obj, Elm_Menu_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
    Eina_List *l, *_l, *_ll, *ll = NULL;
    Elm_Object_Item *eo_item;
@@ -232,7 +232,7 @@ _elm_menu_elm_widget_theme_apply(Eo *obj, Elm_Menu_Data *sd)
    char style[1024];
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    if (sd->menu_bar)
       snprintf(style, sizeof(style), "main_menu/%s", 
elm_widget_style_get(obj));
@@ -295,7 +295,7 @@ _elm_menu_elm_widget_theme_apply(Eo *obj, Elm_Menu_Data *sd)
 
    _sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elm_notify.c b/src/lib/elementary/elm_notify.c
index ed37619..36d115b 100644
--- a/src/lib/elementary/elm_notify.c
+++ b/src/lib/elementary/elm_notify.c
@@ -140,12 +140,12 @@ _sizing_eval(Evas_Object *obj)
    evas_object_resize(obj, w, h);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_notify_elm_widget_theme_apply(Eo *obj, Elm_Notify_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
@@ -157,7 +157,7 @@ _elm_notify_elm_widget_theme_apply(Eo *obj, Elm_Notify_Data 
*sd)
 
    _sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c
index 2e20914..6a780c9 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -204,19 +204,19 @@ _scrollable_layout_theme_set(Eo *obj, Elm_Panel_Data *sd)
      _access_obj_process(obj, EINA_TRUE);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_panel_elm_widget_theme_apply(Eo *obj, Elm_Panel_Data *sd)
 {
    const char *str;
    int w, h;
    Evas_Coord minw = 0, minh = 0;
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
@@ -254,7 +254,7 @@ _elm_panel_elm_widget_theme_apply(Eo *obj, Elm_Panel_Data 
*sd)
 
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/elm_panes.c b/src/lib/elementary/elm_panes.c
index d8f7c4f..a54d646 100644
--- a/src/lib/elementary/elm_panes.c
+++ b/src/lib/elementary/elm_panes.c
@@ -43,13 +43,13 @@ static const Elm_Layout_Part_Alias_Description 
_content_aliases[] =
    {NULL, NULL}
 };
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_panes_elm_widget_theme_apply(Eo *obj, Elm_Panes_Data *sd)
 {
    double size;
    Evas_Coord minw = 0, minh = 0;
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    ELM_LAYOUT_DATA_GET(obj, ld);
 
    if (sd->orientation == EFL_ORIENT_HORIZONTAL)
@@ -62,7 +62,7 @@ _elm_panes_elm_widget_theme_apply(Eo *obj, Elm_Panes_Data *sd)
    evas_object_size_hint_min_set(sd->event, minw, minh);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    size = elm_panes_content_left_size_get(obj);
 
@@ -79,7 +79,7 @@ _elm_panes_elm_widget_theme_apply(Eo *obj, Elm_Panes_Data *sd)
 
    elm_panes_content_left_size_set(obj, size);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/elm_photo.c b/src/lib/elementary/elm_photo.c
index cd1c311..09f3cd7 100644
--- a/src/lib/elementary/elm_photo.c
+++ b/src/lib/elementary/elm_photo.c
@@ -47,14 +47,14 @@ _sizing_eval(Evas_Object *obj)
    evas_object_size_hint_max_set(obj, maxw, maxh);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_photo_elm_widget_theme_apply(Eo *obj, Elm_Photo_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    edje_object_mirrored_set
      (wd->resize_obj, elm_widget_mirrored_get(obj));
@@ -69,7 +69,7 @@ _elm_photo_elm_widget_theme_apply(Eo *obj, Elm_Photo_Data *sd)
                          elm_widget_scale_get(obj) * elm_config_scale_get());
    _sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_photocam.c 
b/src/lib/elementary/elm_photocam.c
index 5f6393d..034d95b 100644
--- a/src/lib/elementary/elm_photocam.c
+++ b/src/lib/elementary/elm_photocam.c
@@ -873,16 +873,16 @@ _elm_photocam_elm_widget_on_focus(Eo *obj, 
Elm_Photocam_Data *_pd EINA_UNUSED, E
    return EINA_TRUE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_photocam_elm_widget_theme_apply(Eo *obj, Elm_Photocam_Data *sd 
EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_plug.c b/src/lib/elementary/elm_plug.c
index 9654577..1f5cd8f 100644
--- a/src/lib/elementary/elm_plug.c
+++ b/src/lib/elementary/elm_plug.c
@@ -80,16 +80,16 @@ _elm_plug_elm_widget_on_focus(Eo *obj, void *sd 
EINA_UNUSED, Elm_Object_Item *it
    return EINA_TRUE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_plug_elm_widget_theme_apply(Eo *obj, void *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h
index 79e33fd..dcdecee 100644
--- a/src/lib/elementary/elm_priv.h
+++ b/src/lib/elementary/elm_priv.h
@@ -383,7 +383,7 @@ void                 _elm_win_focus_reconfigure(void);
 
 Ecore_X_Window       _elm_ee_xwin_get(const Ecore_Evas *ee);
 
-Eina_Bool            _elm_theme_object_set(Evas_Object *parent,
+Elm_Theme_Apply      _elm_theme_object_set(Evas_Object *parent,
                                            Evas_Object *o,
                                            const char *clas,
                                            const char *group,
@@ -391,7 +391,7 @@ Eina_Bool            _elm_theme_object_set(Evas_Object 
*parent,
 Eina_Bool            _elm_theme_object_icon_set(Evas_Object *o,
                                                 const char *group,
                                                 const char *style);
-Eina_Bool            _elm_theme_set(Elm_Theme *th,
+Elm_Theme_Apply      _elm_theme_set(Elm_Theme *th,
                                     Evas_Object *o,
                                     const char *clas,
                                     const char *group,
diff --git a/src/lib/elementary/elm_progressbar.c 
b/src/lib/elementary/elm_progressbar.c
index 4c07e9d..bb33f3d 100644
--- a/src/lib/elementary/elm_progressbar.c
+++ b/src/lib/elementary/elm_progressbar.c
@@ -189,19 +189,19 @@ _elm_progressbar_content_set(Eo *obj, 
Elm_Progressbar_Data *_pd EINA_UNUSED, con
    return EINA_TRUE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_progressbar_elm_widget_theme_apply(Eo *obj, Elm_Progressbar_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    ELM_LAYOUT_DATA_GET(obj, ld);
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    if (_is_horizontal(sd->orientation))
      eina_stringshare_replace(&ld->group, "horizontal");
    else eina_stringshare_replace(&ld->group, "vertical");
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    if (sd->pulse)
      elm_layout_signal_emit(obj, "elm,state,pulse", "elm");
@@ -240,7 +240,7 @@ _elm_progressbar_elm_widget_theme_apply(Eo *obj, 
Elm_Progressbar_Data *sd)
 
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static char *
diff --git a/src/lib/elementary/elm_radio.c b/src/lib/elementary/elm_radio.c
index 5b1dd01..9e4987b 100644
--- a/src/lib/elementary/elm_radio.c
+++ b/src/lib/elementary/elm_radio.c
@@ -163,13 +163,13 @@ _icon_signal_emit(Evas_Object *obj)
    edje_object_message_signal_process(wd->resize_obj);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_radio_elm_widget_theme_apply(Eo *obj, Elm_Radio_Data *sd)
 {
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-   Eina_Bool int_ret = EINA_FALSE;
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, ELM_CHECK_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    if (sd->state) elm_layout_signal_emit(obj, "elm,state,radio,on", "elm");
    else elm_layout_signal_emit(obj, "elm,state,radio,off", "elm");
@@ -185,7 +185,7 @@ _elm_radio_elm_widget_theme_apply(Eo *obj, Elm_Radio_Data 
*sd)
 
    elm_obj_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_route.c b/src/lib/elementary/elm_route.c
index 85a2073..7ce7ad6 100644
--- a/src/lib/elementary/elm_route.c
+++ b/src/lib/elementary/elm_route.c
@@ -86,18 +86,18 @@ _move_resize_cb(void *data EINA_UNUSED,
    _sizing_eval(obj);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_route_elm_widget_theme_apply(Eo *obj, Elm_Route_Data *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    //TODO
 
    _sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 #ifdef ELM_EMAP
diff --git a/src/lib/elementary/elm_scroller.c 
b/src/lib/elementary/elm_scroller.c
index 4ce4c63..467e85d 100644
--- a/src/lib/elementary/elm_scroller.c
+++ b/src/lib/elementary/elm_scroller.c
@@ -380,18 +380,18 @@ _mirrored_set(Evas_Object *obj,
    elm_interface_scrollable_mirrored_set(obj, mirrored);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_scroller_elm_widget_theme_apply(Eo *obj, Elm_Scroller_Data *sd 
EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
    elm_layout_sizing_eval(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/elm_segment_control.c 
b/src/lib/elementary/elm_segment_control.c
index 20c1f0f..f80678a 100644
--- a/src/lib/elementary/elm_segment_control.c
+++ b/src/lib/elementary/elm_segment_control.c
@@ -213,16 +213,16 @@ _update_list(Elm_Segment_Control_Data *sd)
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_segment_control_elm_widget_theme_apply(Eo *obj, Elm_Segment_Control_Data 
*sd)
 {
    Eina_List *l;
    Eina_Bool rtl;
    Elm_Object_Item *eo_item;
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    rtl = elm_widget_mirrored_get(obj);
 
@@ -239,7 +239,7 @@ _elm_segment_control_elm_widget_theme_apply(Eo *obj, 
Elm_Segment_Control_Data *s
 
    _update_list(sd);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/elm_separator.c 
b/src/lib/elementary/elm_separator.c
index e7b5e71..518a2ed 100644
--- a/src/lib/elementary/elm_separator.c
+++ b/src/lib/elementary/elm_separator.c
@@ -15,10 +15,10 @@
 #define MY_CLASS_NAME "Elm_Separator"
 #define MY_CLASS_NAME_LEGACY "elm_separator"
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_separator_elm_widget_theme_apply(Eo *obj, Elm_Separator_Data *sd 
EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    ELM_LAYOUT_DATA_GET(obj, ld);
 
    if (sd->orientation == EFL_ORIENT_HORIZONTAL)
@@ -27,9 +27,9 @@ _elm_separator_elm_widget_theme_apply(Eo *obj, 
Elm_Separator_Data *sd EINA_UNUSE
      eina_stringshare_replace(&ld->group, "vertical");
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elm_slider.c b/src/lib/elementary/elm_slider.c
index cb61366..6d3a7ee 100644
--- a/src/lib/elementary/elm_slider.c
+++ b/src/lib/elementary/elm_slider.c
@@ -739,12 +739,12 @@ _popup_add(Elm_Slider_Data *sd, Eo *obj, Evas_Object 
**popup,
      }
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_slider_elm_widget_theme_apply(Eo *obj, Elm_Slider_Data *sd)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    ELM_LAYOUT_DATA_GET(obj, ld);
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    if (_is_horizontal(sd->orientation))
      {
@@ -779,7 +779,7 @@ _elm_slider_elm_widget_theme_apply(Eo *obj, Elm_Slider_Data 
*sd)
      }
 
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    if (sd->popup)
      {
@@ -849,7 +849,7 @@ _elm_slider_elm_widget_theme_apply(Eo *obj, Elm_Slider_Data 
*sd)
 
    evas_object_smart_changed(obj);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elm_spinner.c b/src/lib/elementary/elm_spinner.c
index f7e3060..f128ba8 100644
--- a/src/lib/elementary/elm_spinner.c
+++ b/src/lib/elementary/elm_spinner.c
@@ -1246,10 +1246,10 @@ _elm_spinner_efl_canvas_group_group_del(Eo *obj, 
Elm_Spinner_Data *sd)
    efl_canvas_group_del(eo_super(obj, MY_CLASS));
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_spinner_elm_widget_theme_apply(Eo *obj, Elm_Spinner_Data *sd)
 {
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
    if (!elm_layout_theme_set(obj, "spinner", "base", 
elm_widget_style_get(obj)))
      CRI("Failed to set layout!");
@@ -1295,7 +1295,7 @@ _elm_spinner_elm_widget_theme_apply(Eo *obj, 
Elm_Spinner_Data *sd)
      _access_spinner_register(obj, EINA_TRUE);
 
    elm_layout_sizing_eval(obj);
-   return EINA_TRUE;
+   return ELM_THEME_APPLY_SUCCESS;
 }
 
 static Eina_Bool _elm_spinner_smart_focus_next_enable = EINA_FALSE;
diff --git a/src/lib/elementary/elm_table.c b/src/lib/elementary/elm_table.c
index e5efebd..c6432ea 100644
--- a/src/lib/elementary/elm_table.c
+++ b/src/lib/elementary/elm_table.c
@@ -106,16 +106,16 @@ _mirrored_set(Evas_Object *obj, Eina_Bool rtl)
    evas_object_table_mirrored_set(wd->resize_obj, rtl);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_table_elm_widget_theme_apply(Eo *obj, void *sd EINA_UNUSED)
 {
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_theme.c b/src/lib/elementary/elm_theme.c
index d3a2f35..96c15f0 100644
--- a/src/lib/elementary/elm_theme.c
+++ b/src/lib/elementary/elm_theme.c
@@ -273,14 +273,13 @@ _elm_theme_data_find(Elm_Theme *th, const char *key)
    return NULL;
 }
 
-Eina_Bool
+Elm_Theme_Apply
 _elm_theme_object_set(Evas_Object *parent, Evas_Object *o, const char *clas, 
const char *group, const char *style)
 {
    Elm_Theme *th = NULL;
 
    if (parent) th = elm_widget_theme_get(parent);
-   if (!_elm_theme_set(th, o, clas, group, style)) return EINA_FALSE;
-   return EINA_TRUE;
+   return _elm_theme_set(th, o, clas, group, style);
 }
 
 /* only issued by elm_icon.c */
@@ -294,7 +293,7 @@ _elm_theme_object_icon_set(Evas_Object *o,
    return _elm_theme_icon_set(th, o, group, style);
 }
 
-Eina_Bool
+Elm_Theme_Apply
 _elm_theme_set(Elm_Theme *th, Evas_Object *o, const char *clas, const char 
*group, const char *style)
 {
    Eina_File *file;
@@ -308,7 +307,7 @@ _elm_theme_set(Elm_Theme *th, Evas_Object *o, const char 
*clas, const char *grou
         file = _elm_theme_group_file_find(th, buf2);
         if (file)
           {
-             if (edje_object_mmap_set(o, file, buf2)) return EINA_TRUE;
+             if (edje_object_mmap_set(o, file, buf2)) return 
ELM_THEME_APPLY_SUCCESS;
              else
                {
                   INF("could not set theme group '%s' from file '%s': %s",
@@ -332,7 +331,7 @@ _elm_theme_set(Elm_Theme *th, Evas_Object *o, const char 
*clas, const char *grou
                {
                   INF("could not set theme style '%s', fallback to default",
                       style);
-                  return EINA_TRUE;
+                  return ELM_THEME_APPLY_DEFAULT;
                }
              else
                {
@@ -345,7 +344,7 @@ _elm_theme_set(Elm_Theme *th, Evas_Object *o, const char 
*clas, const char *grou
         //style not found, add to the not found list
         eina_hash_add(th->cache_style_load_failed, buf2, (void *)1);
      }
-   return EINA_FALSE;
+   return ELM_THEME_APPLY_FAILED;
 }
 
 Eina_Bool
diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c
index 599f349..822514e 100644
--- a/src/lib/elementary/elm_toolbar.c
+++ b/src/lib/elementary/elm_toolbar.c
@@ -1561,18 +1561,18 @@ _elm_toolbar_highlight_in_theme(Evas_Object *obj)
      elm_widget_highlight_in_theme_set(obj, EINA_FALSE);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_toolbar_elm_widget_theme_apply(Eo *obj, Elm_Toolbar_Data *sd)
 {
    Elm_Toolbar_Item_Data *it;
    double scale = 0;
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ELM_THEME_APPLY_FAILED);
 
-   if (sd->delete_me) return EINA_TRUE;
+   if (sd->delete_me) return ELM_THEME_APPLY_SUCCESS;
 
-   Eina_Bool int_ret = EINA_FALSE;
+   Elm_Theme_Apply int_ret = ELM_THEME_APPLY_FAILED;
    int_ret = elm_obj_widget_theme_apply(eo_super(obj, MY_CLASS));
-   if (!int_ret) return EINA_FALSE;
+   if (!int_ret) return ELM_THEME_APPLY_FAILED;
 
    elm_widget_theme_object_set
      (obj, wd->resize_obj, "toolbar", "base",
@@ -1606,7 +1606,7 @@ _elm_toolbar_elm_widget_theme_apply(Eo *obj, 
Elm_Toolbar_Data *sd)
    _elm_toolbar_highlight_in_theme(obj);
    evas_object_smart_need_recalculate_set(obj, EINA_TRUE);
 
-   return EINA_TRUE;
+   return int_ret;
 }
 
 static void
diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index a563968..18844f1 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -942,16 +942,16 @@ _elm_widget_access(Eo *obj EINA_UNUSED, 
Elm_Widget_Smart_Data *_pd EINA_UNUSED,
 {
 }
 
-EAPI Eina_Bool
+EAPI Elm_Theme_Apply
 elm_widget_theme(Evas_Object *obj)
 {
    const Eina_List *l;
    Evas_Object *child;
    Elm_Tooltip *tt;
    Elm_Cursor *cur;
-   Eina_Bool ret = EINA_TRUE;
+   Elm_Theme_Apply ret = ELM_THEME_APPLY_SUCCESS;
 
-   API_ENTRY return EINA_FALSE;
+   API_ENTRY return ELM_THEME_APPLY_FAILED;
 
    EINA_LIST_FOREACH(sd->subobjs, l, child)
      if (_elm_widget_is(child))
@@ -964,7 +964,7 @@ elm_widget_theme(Evas_Object *obj)
    EINA_LIST_FOREACH(sd->cursors, l, cur)
      elm_cursor_theme(cur);
 
-   Eina_Bool ret2 = EINA_FALSE;
+   Elm_Theme_Apply ret2 = ELM_THEME_APPLY_FAILED;
    ret2 = elm_obj_widget_theme_apply(obj);
    ret &= ret2;
 
@@ -1016,14 +1016,14 @@ elm_widget_theme_specific(Evas_Object *obj,
    elm_obj_widget_theme_apply(obj);
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_widget_theme_apply(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED)
 {
    _elm_widget_mirrored_reload(obj);
 
    elm_widget_disabled_set(obj, elm_widget_disabled_get(obj));
 
-   return EINA_TRUE;
+   return ELM_THEME_APPLY_SUCCESS;
 }
 
 /**
@@ -3747,13 +3747,13 @@ _elm_widget_theme_get(Eo *obj EINA_UNUSED, 
Elm_Widget_Smart_Data *sd)
    return sd->theme;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_widget_style_set(Eo *obj, Elm_Widget_Smart_Data *sd, const char *style)
 {
    if (eina_stringshare_replace(&sd->style, style))
       return elm_widget_theme(obj);
 
-   return EINA_TRUE;
+   return ELM_THEME_APPLY_SUCCESS;
 }
 
 EOLIAN static const char*
@@ -3844,12 +3844,13 @@ _elm_widget_item_loop_enabled_get(Eo *obj EINA_UNUSED, 
Elm_Widget_Smart_Data *sd
        return EINA_FALSE;
 }
 
-EOLIAN static Eina_Bool
+EOLIAN static Elm_Theme_Apply
 _elm_widget_theme_object_set(Eo *obj, Elm_Widget_Smart_Data *sd, Evas_Object 
*edj, const char *wname, const char *welement, const char *wstyle)
 {
-   if (!_elm_theme_object_set(obj, edj, wname, welement, wstyle))
+   Elm_Theme_Apply ret = _elm_theme_object_set(obj, edj, wname, welement, 
wstyle);
+   if (!ret)
      {
-        return EINA_FALSE;
+        return ELM_THEME_APPLY_FAILED;
      }
 
    if (sd->orient_mode != -1)
@@ -3859,7 +3860,7 @@ _elm_widget_theme_object_set(Eo *obj, 
Elm_Widget_Smart_Data *sd, Evas_Object *ed
         elm_obj_widget_signal_emit(obj, buf, "elm");
      }
 
-   return EINA_TRUE;
+   return ret;
 }
 
 EOLIAN static void
diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo
index 57c5674..e495a4b 100644
--- a/src/lib/elementary/elm_widget.eo
+++ b/src/lib/elementary/elm_widget.eo
@@ -17,6 +17,13 @@ enum Elm.Activate
    back,
 }
 
+enum Elm.Theme.Apply
+{
+   failed = 0,
+   default = 1,
+   success = 3
+}
+
 struct Elm.Tooltip;
 struct Elm.Cursor;
 struct @extern Elm.Theme;
@@ -133,7 +140,7 @@ abstract Elm.Widget (Efl.Canvas.Group, 
Elm.Interface.Atspi_Accessible, Elm.Inter
       }
       @property style {
          set {
-            return: bool;
+            return: Elm.Theme.Apply;
          }
          get {
          }
@@ -258,7 +265,7 @@ abstract Elm.Widget (Efl.Canvas.Group, 
Elm.Interface.Atspi_Accessible, Elm.Inter
       }
       @property theme_object {
          set {
-            return: bool;
+            return: Elm.Theme.Apply;
          }
          values {
             edj: Efl.Canvas.Object;
@@ -749,7 +756,7 @@ abstract Elm.Widget (Efl.Canvas.Group, 
Elm.Interface.Atspi_Accessible, Elm.Inter
       }
       theme_apply {
          [['Virtual' function on the widget being re-themed.]]
-         return: bool;
+         return: Elm.Theme.Apply;
       }
       focus_direction_get @const {
          return: bool;
diff --git a/src/lib/elementary/elm_widget.h b/src/lib/elementary/elm_widget.h
index aa8b210..030e099 100644
--- a/src/lib/elementary/elm_widget.h
+++ b/src/lib/elementary/elm_widget.h
@@ -621,7 +621,7 @@ EAPI Evas_Object     *elm_widget_add(Evas_Smart *, 
Evas_Object *);
 EAPI void             elm_widget_parent_set(Evas_Object *, Evas_Object *);
 EAPI Eina_Bool        elm_widget_api_check(int ver);
 EAPI Eina_Bool        elm_widget_access(Evas_Object *obj, Eina_Bool is_access);
-EAPI Eina_Bool        elm_widget_theme(Evas_Object *obj);
+EAPI Elm_Theme_Apply  elm_widget_theme(Evas_Object *obj);
 EAPI void             elm_widget_theme_specific(Evas_Object *obj, Elm_Theme 
*th, Eina_Bool force);
 EAPI void             elm_widget_translate(Evas_Object *obj);
 EAPI void             elm_widget_on_show_region_hook_set(Evas_Object *obj, 
void (*func)(void *data, Evas_Object *obj), void *data);
@@ -722,7 +722,7 @@ EAPI Eina_Bool        
elm_widget_mirrored_automatic_get(const Evas_Object *obj);
 EAPI void             elm_widget_mirrored_automatic_set(Evas_Object *obj, 
Eina_Bool automatic);
 EAPI void             elm_widget_theme_set(Evas_Object *obj, Elm_Theme *th);
 EAPI Elm_Theme       *elm_widget_theme_get(const Evas_Object *obj);
-EAPI Eina_Bool        elm_widget_style_set(Evas_Object *obj, const char 
*style);
+EAPI Elm_Theme_Apply  elm_widget_style_set(Evas_Object *obj, const char 
*style);
 EAPI const char      *elm_widget_style_get(const Evas_Object *obj);
 EAPI void             elm_widget_type_set(Evas_Object *obj, const char *type);
 EAPI const char      *elm_widget_type_get(const Evas_Object *obj);
@@ -738,7 +738,7 @@ EAPI int              
elm_widget_drag_child_locked_x_get(const Evas_Object *obj)
 EAPI int              elm_widget_drag_child_locked_y_get(const Evas_Object 
*obj);
 EAPI void             elm_widget_item_loop_enabled_set(Evas_Object *obj, 
Eina_Bool enable);
 EAPI Eina_Bool        elm_widget_item_loop_enabled_get(const Evas_Object *obj);
-EAPI Eina_Bool        elm_widget_theme_object_set(Evas_Object *obj, 
Evas_Object *edj, const char *wname, const char *welement, const char *wstyle);
+EAPI Elm_Theme_Apply  elm_widget_theme_object_set(Evas_Object *obj, 
Evas_Object *edj, const char *wname, const char *welement, const char *wstyle);
 EAPI Eina_Bool        elm_widget_type_check(const Evas_Object *obj, const char 
*type, const char *func);
 EAPI Evas_Object     *elm_widget_name_find(const Evas_Object *obj, const char 
*name, int recurse);
 EAPI Eina_List       *elm_widget_stringlist_get(const char *str);

-- 


Reply via email to