summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSungtaek Hong <sth253.hong@samsung.com>2017-11-14 20:38:49 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-12-06 17:35:21 +0900
commit82ef179f47c18e9f33a3dee156523fd7bcd64b11 (patch)
treebeb1b0bbb0137b235b9448cf2d8e3be3f9f60c92
parent4356cc4044d73828055cd64bc91f930261fb80fb (diff)
downloadefl-82ef179f47c18e9f33a3dee156523fd7bcd64b11.tar.gz
efl_ui_widget: use elm_widget_element_update to set subobj edc
affected widget list: efl_ui_clock: test, ampm efl_ui_multibuttonentry: guidetext, label, closedbutton efl_ui_slider: popup(indicator) efl_ui_text: scroller, handler, magnifier, cursor, selection, anchor
-rw-r--r--src/lib/elementary/efl_ui_clock.c2
-rw-r--r--src/lib/elementary/efl_ui_clock_private.h9
-rw-r--r--src/lib/elementary/efl_ui_layout.c11
-rw-r--r--src/lib/elementary/efl_ui_layout.eo1
-rw-r--r--src/lib/elementary/efl_ui_multibuttonentry.c34
-rw-r--r--src/lib/elementary/efl_ui_progressbar.c68
-rw-r--r--src/lib/elementary/efl_ui_slider.c178
-rw-r--r--src/lib/elementary/efl_ui_slider_interval.c1
-rw-r--r--src/lib/elementary/efl_ui_text.c79
-rw-r--r--src/lib/elementary/efl_ui_win.c1
10 files changed, 247 insertions, 137 deletions
diff --git a/src/lib/elementary/efl_ui_clock.c b/src/lib/elementary/efl_ui_clock.c
index 969cfd9e41..b205c93991 100644
--- a/src/lib/elementary/efl_ui_clock.c
+++ b/src/lib/elementary/efl_ui_clock.c
@@ -517,6 +517,8 @@ _efl_ui_clock_elm_widget_theme_apply(Eo *obj, Efl_Ui_Clock_Data *sd)
for (idx = 0; idx < EFL_UI_CLOCK_TYPE_COUNT; idx++)
{
field = sd->field_list + idx;
+ // TODO: Different group name for each field_obj may be needed.
+ elm_widget_element_update(obj, field->item_obj, PART_NAME_ARRAY[idx]);
if (field->fmt_exist && field->visible)
{
snprintf(buf, sizeof(buf), EDC_PART_FIELD_ENABLE_SIG_STR,
diff --git a/src/lib/elementary/efl_ui_clock_private.h b/src/lib/elementary/efl_ui_clock_private.h
index 94c9d702e7..e37a8ceff3 100644
--- a/src/lib/elementary/efl_ui_clock_private.h
+++ b/src/lib/elementary/efl_ui_clock_private.h
@@ -33,6 +33,15 @@ typedef struct _Format_Map Format_Map;
#define EFL_UI_CLOCK_MAX_FORMAT_LEN 64
#define EFL_UI_CLOCK_MAX_FIELD_FORMAT_LEN 3
+const char *PART_NAME_ARRAY[EFL_UI_CLOCK_TYPE_COUNT] = { "text",
+ "text",
+ "text",
+ "text",
+ "text",
+ "text",
+ "text",
+ "ampm"};
+
struct _Efl_Ui_Clock_Module_Data
{
Evas_Object *base;
diff --git a/src/lib/elementary/efl_ui_layout.c b/src/lib/elementary/efl_ui_layout.c
index 37ae263d69..24fb83fd6c 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -2071,6 +2071,17 @@ EOLIAN static void _efl_ui_layout_class_constructor(Efl_Class *klass)
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
+EOLIAN static Efl_Object*
+_efl_ui_layout_efl_object_finalize(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED)
+{
+ Eo *eo;
+
+ eo = efl_finalize(efl_super(obj, MY_CLASS));
+ efl_ui_widget_theme_apply(eo);
+
+ return eo;
+}
+
EOLIAN static void
_efl_ui_layout_efl_layout_signal_message_send(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, int id, const Eina_Value msg)
{
diff --git a/src/lib/elementary/efl_ui_layout.eo b/src/lib/elementary/efl_ui_layout.eo
index b4f4bdf9f5..987e205ade 100644
--- a/src/lib/elementary/efl_ui_layout.eo
+++ b/src/lib/elementary/efl_ui_layout.eo
@@ -45,6 +45,7 @@ class Efl.Ui.Layout (Elm.Widget, Efl.Part, Efl.Container, Efl.File,
implements {
class.constructor;
Efl.Object.constructor;
+ Efl.Object.finalize;
Efl.File.file { get; set; }
Efl.File.mmap { get; set; }
Efl.Canvas.Group.group_calculate;
diff --git a/src/lib/elementary/efl_ui_multibuttonentry.c b/src/lib/elementary/efl_ui_multibuttonentry.c
index 0eaa681a8a..03334a6457 100644
--- a/src/lib/elementary/efl_ui_multibuttonentry.c
+++ b/src/lib/elementary/efl_ui_multibuttonentry.c
@@ -35,6 +35,11 @@ static const char SIG_UNFOCUSED[] = "unfocused";
static const char SIG_EXPANDED[] = "expanded";
static const char SIG_CONTRACTED[] = "contracted";
static const char SIG_EXPAND_STATE_CHANGED[] = "expand,state,changed";
+
+static const char PART_NAME_BUTTON[] = "btn";
+static const char PART_NAME_GUIDE_TEXT[] = "guidetext";
+static const char PART_NAME_LABEL[] = "label";
+static const char PART_NAME_CLOSED_BUTTON[] = "closedbutton";
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_ITEM_SELECTED, ""},
{SIG_ITEM_ADDED, ""},
@@ -117,20 +122,13 @@ _efl_ui_multibuttonentry_elm_widget_theme_apply(Eo *obj, Efl_Ui_Multibuttonentry
{
ELM_MULTIBUTTONENTRY_ITEM_DATA_GET(eo_item, item);
if (VIEW(item))
- if (!elm_layout_theme_set
- (VIEW(item), "multibuttonentry", "btn", elm_widget_style_get(obj)))
+ if (!elm_widget_element_update(obj, VIEW(item), PART_NAME_BUTTON))
CRI("Failed to set layout!");
}
- elm_widget_theme_object_set
- (obj, sd->label, "multibuttonentry", "label",
- elm_widget_style_get(obj));
- elm_widget_theme_object_set
- (obj, sd->end, "multibuttonentry", "closedbutton",
- elm_widget_style_get(obj));
- elm_widget_theme_object_set
- (obj,sd->guide_text, "multibuttonentry", "guidetext",
- elm_widget_style_get(obj));
+ elm_widget_element_update(obj, sd->label, PART_NAME_LABEL);
+ elm_widget_element_update(obj, sd->end, PART_NAME_CLOSED_BUTTON);
+ elm_widget_element_update(obj, sd->guide_text, PART_NAME_GUIDE_TEXT);
elm_layout_sizing_eval(obj);
@@ -764,8 +762,7 @@ _item_new(Efl_Ui_Multibuttonentry_Data *sd,
efl_access_type_set(VIEW(item), EFL_ACCESS_TYPE_DISABLED);
- if (!elm_layout_theme_set
- (VIEW(item), "multibuttonentry", "btn", elm_widget_style_get(obj)))
+ if (!elm_widget_element_update(obj, VIEW(item), PART_NAME_BUTTON))
CRI("Failed to set layout!");
elm_object_part_text_set(VIEW(item), "elm.btn.text", str);
@@ -1246,8 +1243,7 @@ _guide_text_set(Evas_Object *obj,
if (sd->guide_text)
{
- elm_widget_theme_object_set(obj, sd->guide_text, "multibuttonentry",
- "guidetext", elm_widget_style_get(obj));
+ elm_widget_element_update(obj, sd->guide_text, PART_NAME_GUIDE_TEXT);
evas_object_size_hint_weight_set
(sd->guide_text, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set
@@ -1447,9 +1443,7 @@ _view_init(Evas_Object *obj, Efl_Ui_Multibuttonentry_Data *sd)
sd->label = edje_object_add(evas_object_evas_get(obj));
if (!sd->label) return;
- elm_widget_theme_object_set
- (obj, sd->label, "multibuttonentry", "label",
- elm_widget_style_get(obj));
+ elm_widget_element_update(obj, sd->label, PART_NAME_LABEL);
// ACCESS
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
@@ -1477,9 +1471,7 @@ _view_init(Evas_Object *obj, Efl_Ui_Multibuttonentry_Data *sd)
sd->end = edje_object_add(evas_object_evas_get(obj));
if (!sd->end) return;
- elm_widget_theme_object_set
- (obj, sd->end, "multibuttonentry", "closedbutton",
- elm_widget_style_get(obj));
+ elm_widget_element_update(obj, sd->end, PART_NAME_CLOSED_BUTTON);
edje_object_size_min_calc(sd->end, &button_min_width, &button_min_height);
elm_coords_finger_size_adjust(1, &button_min_width, 1, &button_min_height);
diff --git a/src/lib/elementary/efl_ui_progressbar.c b/src/lib/elementary/efl_ui_progressbar.c
index 697c727d6e..9764f12748 100644
--- a/src/lib/elementary/efl_ui_progressbar.c
+++ b/src/lib/elementary/efl_ui_progressbar.c
@@ -198,15 +198,77 @@ _efl_ui_progressbar_elm_widget_widget_sub_object_add(Eo *obj, Efl_Ui_Progressbar
return EINA_TRUE;
}
+//TODO: efl_ui_slider also use this.
+static const char *
+_theme_group_modify_pos_get(const char *cur_group, const char *search, size_t len, Eina_Bool is_legacy)
+{
+ const char *pos = NULL;
+ const char *temp_str = NULL;
+
+ if (is_legacy)
+ return cur_group;
+
+ temp_str = cur_group + len - strlen(search);
+ if (temp_str >= cur_group)
+ {
+ if (!strcmp(temp_str, search))
+ pos = temp_str;
+ }
+
+ return pos;
+}
+
+static char *
+_efl_ui_progressbar_theme_group_get(Evas_Object *obj, Efl_Ui_Progressbar_Data *sd)
+{
+ const char *pos = NULL;
+ const char *cur_group = elm_widget_theme_element_get(obj);
+ Eina_Strbuf *new_group = eina_strbuf_new();
+ Eina_Bool is_legacy = elm_widget_is_legacy(obj);
+ size_t len = 0;
+
+ if (cur_group)
+ {
+ len = strlen(cur_group);
+ pos = _theme_group_modify_pos_get(cur_group, "horizontal", len, is_legacy);
+ if (!pos)
+ pos = _theme_group_modify_pos_get(cur_group, "vertical", len, is_legacy);
+
+
+ // TODO: change separator when it is decided.
+ // can skip when prev_group == cur_group
+ if (!pos)
+ {
+ eina_strbuf_append(new_group, cur_group);
+ eina_strbuf_append(new_group, "/");
+ }
+ else
+ {
+ eina_strbuf_append_length(new_group, cur_group, pos - cur_group);
+ }
+ }
+
+ if (_is_horizontal(sd->dir))
+ eina_strbuf_append(new_group, "horizontal");
+ else
+ eina_strbuf_append(new_group, "vertical");
+
+ return eina_strbuf_release(new_group);
+}
+
EOLIAN static Efl_Ui_Theme_Apply
_efl_ui_progressbar_elm_widget_theme_apply(Eo *obj, Efl_Ui_Progressbar_Data *sd)
{
Efl_Ui_Theme_Apply int_ret = EFL_UI_THEME_APPLY_FAILED;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EFL_UI_THEME_APPLY_FAILED);
+ char *group;
- if (_is_horizontal(sd->dir))
- elm_widget_theme_element_set(obj, "horizontal");
- else elm_widget_theme_element_set(obj, "vertical");
+ group = _efl_ui_progressbar_theme_group_get(obj, sd);
+ if (group)
+ {
+ elm_widget_theme_element_set(obj, group);
+ free(group);
+ }
int_ret = efl_ui_widget_theme_apply(efl_super(obj, MY_CLASS));
if (!int_ret) return EFL_UI_THEME_APPLY_FAILED;
diff --git a/src/lib/elementary/efl_ui_slider.c b/src/lib/elementary/efl_ui_slider.c
index 9ec6cb2e2b..2a02116d5d 100644
--- a/src/lib/elementary/efl_ui_slider.c
+++ b/src/lib/elementary/efl_ui_slider.c
@@ -39,6 +39,8 @@ static const char SIG_CHANGED[] = "changed";
static const char SIG_DELAY_CHANGED[] = "delay,changed";
static const char SIG_DRAG_START[] = "slider,drag,start";
static const char SIG_DRAG_STOP[] = "slider,drag,stop";
+
+static const char PART_NAME_POPUP[] = "popup";
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_CHANGED, ""},
{SIG_DELAY_CHANGED, ""},
@@ -648,6 +650,32 @@ _track2_resize_cb(void *data,
}
static void
+_popup_update(Evas_Object *obj, Efl_Ui_Slider_Data *sd, Evas_Object *popup)
+{
+ if (elm_widget_is_legacy(obj))
+ {
+ if (_is_horizontal(sd->dir))
+ efl_ui_widget_theme_object_set(obj, popup, "slider", "horizontal/popup", elm_widget_style_get(obj));
+ else
+ efl_ui_widget_theme_object_set(obj, popup, "slider", "vertical/popup", elm_widget_style_get(obj));
+ }
+ else
+ elm_widget_element_update(obj, popup, PART_NAME_POPUP);
+ edje_object_scale_set(popup, efl_gfx_scale_get(obj) *
+ elm_config_scale_get());
+
+ if (!_is_inverted(sd->dir))
+ edje_object_signal_emit(popup, "elm,state,inverted,off", "elm");
+ else
+ edje_object_signal_emit(popup, "elm,state,inverted,on", "elm");
+
+ if (sd->indicator_show)
+ edje_object_signal_emit(popup, "elm,state,val,show", "elm");
+ else
+ edje_object_signal_emit(popup, "elm,state,val,hide", "elm");
+}
+
+static void
_popup_add(Efl_Ui_Slider_Data *sd, Eo *obj, Evas_Object **popup,
Evas_Object **track, Eina_Bool is_range)
{
@@ -662,17 +690,13 @@ _popup_add(Efl_Ui_Slider_Data *sd, Eo *obj, Evas_Object **popup,
// XXX popup needs to adapt to theme etc.
*popup = edje_object_add(evas_object_evas_get(obj));
evas_object_smart_member_add(*popup, obj);
- if (_is_horizontal(sd->dir))
- efl_ui_widget_theme_object_set(obj, *popup, "slider", "horizontal/popup", elm_widget_style_get(obj));
- else
- efl_ui_widget_theme_object_set(obj, *popup, "slider", "vertical/popup", elm_widget_style_get(obj));
- edje_object_scale_set(*popup, efl_gfx_scale_get(obj) *
- elm_config_scale_get());
edje_object_signal_callback_add(*popup, "popup,hide,done", "elm", // XXX: for compat
_popup_hide_done, obj);
edje_object_signal_callback_add(*popup, "elm,popup,hide,done", "elm",
_popup_hide_done, obj);
+ _popup_update(obj, sd, *popup);
+
/* create a rectangle to track position+size of the dragable */
*track = evas_object_rectangle_add(evas_object_evas_get(obj));
evas_object_color_set(*track, 0, 0, 0, 0);
@@ -695,64 +719,82 @@ _popup_add(Efl_Ui_Slider_Data *sd, Eo *obj, Evas_Object **popup,
}
}
-EOLIAN static Efl_Ui_Theme_Apply
-_efl_ui_slider_elm_widget_theme_apply(Eo *obj, Efl_Ui_Slider_Data *sd)
+static const char *
+_theme_group_modify_pos_get(const char *cur_group, const char *search, size_t len, Eina_Bool is_legacy)
{
- Efl_Ui_Theme_Apply int_ret = EFL_UI_THEME_APPLY_FAILED;
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EFL_UI_THEME_APPLY_FAILED);
+ const char *pos = NULL;
+ const char *temp_str = NULL;
- if (_is_horizontal(sd->dir))
+ if (is_legacy)
+ return cur_group;
+
+ temp_str = cur_group + len - strlen(search);
+ if (temp_str >= cur_group)
{
- if (!sd->intvl_enable)
- elm_widget_theme_element_set(obj, "horizontal");
- else
- elm_widget_theme_element_set(obj, "range/horizontal");
- if (sd->popup)
- efl_ui_widget_theme_object_set(obj, sd->popup,
- "slider", "horizontal/popup",
- elm_widget_style_get(obj));
- if (sd->popup2)
- efl_ui_widget_theme_object_set(obj, sd->popup2,
- "slider", "horizontal/popup",
- elm_widget_style_get(obj));
+ if (!strcmp(temp_str, search))
+ pos = temp_str;
}
- else
- {
- if (!sd->intvl_enable)
- elm_widget_theme_element_set(obj, "vertical");
- else
- elm_widget_theme_element_set(obj, "range/vertical");
- if (sd->popup)
- efl_ui_widget_theme_object_set(obj, sd->popup,
- "slider", "vertical/popup",
- elm_widget_style_get(obj));
- if (sd->popup2)
- efl_ui_widget_theme_object_set(obj, sd->popup2,
- "slider", "vertical/popup",
- elm_widget_style_get(obj));
- }
+ return pos;
+}
- int_ret = efl_ui_widget_theme_apply(efl_super(obj, MY_CLASS));
- if (!int_ret) return EFL_UI_THEME_APPLY_FAILED;
+static char *
+_efl_ui_slider_theme_group_get(Evas_Object *obj, Efl_Ui_Slider_Data *sd)
+{
+ const char *pos = NULL;
+ const char *cur_group = elm_widget_theme_element_get(obj);
+ Eina_Strbuf *new_group = eina_strbuf_new();
+ Eina_Bool is_legacy = elm_widget_is_legacy(obj);
+ size_t len = 0;
- if (sd->popup)
+ if (cur_group)
{
- edje_object_scale_set(sd->popup, efl_gfx_scale_get(obj) *
- elm_config_scale_get());
- if (sd->intvl_enable && sd->popup2)
- edje_object_scale_set(sd->popup2, efl_gfx_scale_get(obj) *
- elm_config_scale_get());
- else if (sd->intvl_enable && !sd->popup2)
- _popup_add(sd, obj, &sd->popup2, &sd->track2, EINA_TRUE);
+ len = strlen(cur_group);
+ pos = _theme_group_modify_pos_get(cur_group, "horizontal", len, is_legacy);
+ if (!pos)
+ pos = _theme_group_modify_pos_get(cur_group, "vertical", len, is_legacy);
+
+
+ // TODO: change separator when it is decided.
+ // can skip when prev_group == cur_group
+ if (!pos)
+ {
+ eina_strbuf_append(new_group, cur_group);
+ eina_strbuf_append(new_group, "/");
+ }
+ else
+ {
+ eina_strbuf_append_length(new_group, cur_group, pos - cur_group);
+ }
}
+
+ if (is_legacy && sd->intvl_enable)
+ eina_strbuf_append(new_group, "range/");
+ if (_is_horizontal(sd->dir))
+ eina_strbuf_append(new_group, "horizontal");
else
+ eina_strbuf_append(new_group, "vertical");
+
+ return eina_strbuf_release(new_group);
+}
+
+EOLIAN static Efl_Ui_Theme_Apply
+_efl_ui_slider_elm_widget_theme_apply(Eo *obj, Efl_Ui_Slider_Data *sd)
+{
+ Efl_Ui_Theme_Apply int_ret = EFL_UI_THEME_APPLY_FAILED;
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EFL_UI_THEME_APPLY_FAILED);
+ char *group;
+
+ group = _efl_ui_slider_theme_group_get(obj, sd);
+ if (group)
{
- _popup_add(sd, obj, &sd->popup, &sd->track, EINA_FALSE);
- if (sd->intvl_enable && !sd->popup2)
- _popup_add(sd, obj, &sd->popup2, &sd->track2, EINA_TRUE);
+ elm_widget_theme_element_set(obj, group);
+ free(group);
}
+ int_ret = efl_ui_widget_theme_apply(efl_super(obj, MY_CLASS));
+ if (!int_ret) return EFL_UI_THEME_APPLY_FAILED;
+
if (_is_horizontal(sd->dir))
evas_object_size_hint_min_set
(sd->spacer, (double)sd->size * efl_gfx_scale_get(obj) *
@@ -768,27 +810,27 @@ _efl_ui_slider_elm_widget_theme_apply(Eo *obj, Efl_Ui_Slider_Data *sd)
elm_layout_signal_emit(obj, "elm,slider,range,disable", "elm");
if (_is_inverted(sd->dir))
- {
- elm_layout_signal_emit(obj, "elm,state,inverted,on", "elm");
- if (sd->popup)
- edje_object_signal_emit(sd->popup, "elm,state,inverted,on", "elm");
- if (sd->popup2)
- edje_object_signal_emit(sd->popup2, "elm,state,inverted,on", "elm");
- }
+ elm_layout_signal_emit(obj, "elm,state,inverted,on", "elm");
else
- {
- elm_layout_signal_emit(obj, "elm,state,inverted,off", "elm");
- if (sd->popup)
- edje_object_signal_emit(sd->popup, "elm,state,inverted,off", "elm");
- }
+ elm_layout_signal_emit(obj, "elm,state,inverted,off", "elm");
if (sd->indicator_show)
+ elm_layout_signal_emit(obj, "elm,state,val,show", "elm");
+ else
+ elm_layout_signal_emit(obj, "elm,state,val,hide", "elm");
+
+
+ if (!sd->popup)
+ _popup_add(sd, obj, &sd->popup, &sd->track, sd->intvl_enable);
+ else
+ _popup_update(obj, sd, sd->popup);
+
+ if (sd->intvl_enable)
{
- elm_layout_signal_emit(obj, "elm,state,val,show", "elm");
- if (sd->popup)
- edje_object_signal_emit(sd->popup, "elm,state,val,show", "elm");
- if (sd->popup2)
- edje_object_signal_emit(sd->popup2, "elm,state,val,show", "elm");
+ if (!sd->popup2)
+ _popup_add(sd, obj, &sd->popup2, &sd->track2, EINA_TRUE);
+ else
+ _popup_update(obj, sd, sd->popup2);
}
_min_max_set(obj);
diff --git a/src/lib/elementary/efl_ui_slider_interval.c b/src/lib/elementary/efl_ui_slider_interval.c
index 6ce977eccb..17b86c2409 100644
--- a/src/lib/elementary/efl_ui_slider_interval.c
+++ b/src/lib/elementary/efl_ui_slider_interval.c
@@ -107,6 +107,7 @@ _efl_ui_slider_interval_efl_object_finalize(Eo *obj, void *sd EINA_UNUSED)
pd->intvl_enable = EINA_TRUE;
+ elm_widget_theme_klass_set(obj, "slider_interval");
efl_ui_widget_theme_apply(obj);
elm_layout_signal_emit(obj, "elm,slider,range,enable", "elm");
diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c
index 44f546d31e..ce02cd139a 100644
--- a/src/lib/elementary/efl_ui_text.c
+++ b/src/lib/elementary/efl_ui_text.c
@@ -256,7 +256,15 @@ struct _Mod_Api
void (*obj_longpress)(Evas_Object *obj);
};
-static void _create_selection_handlers(Evas_Object *obj, Efl_Ui_Text_Data *sd, const char *file);
+static const char PART_NAME_SCROLLER[] = "scroller";
+static const char PART_NAME_HANDLER_START[] = "handler/start";
+static const char PART_NAME_HANDLER_END[] = "handler/end";
+static const char PART_NAME_MAGNIFIER[] = "magnifier";
+static const char PART_NAME_CURSOR[] = "cursor";
+static const char PART_NAME_SELECTION[] = "selection";
+static const char PART_NAME_ANCHOR[] = "anchor";
+
+static void _create_selection_handlers(Evas_Object *obj, Efl_Ui_Text_Data *sd);
static void _magnifier_move(void *data);
static void _update_decorations(Eo *obj);
static void _create_text_cursors(Eo *obj, Efl_Ui_Text_Data *sd);
@@ -270,7 +278,7 @@ static void _efl_ui_text_anchor_hover_parent_set(Eo *obj, Efl_Ui_Text_Data *sd,
static const char* _efl_ui_text_selection_get(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd);
static void _edje_signal_emit(Efl_Ui_Text_Data *obj, const char *sig, const char *src);
static void _decoration_defer_all(Eo *obj);
-static inline Eo * _decoration_create(Efl_Ui_Text_Data *sd, const char *file, const char *source, Eina_Bool above);
+static inline Eo * _decoration_create(Eo *obj, Efl_Ui_Text_Data *sd, const char *source, Eina_Bool above);
static void _decoration_defer(Eo *obj);
static void _anchors_clear_all(Evas_Object *o EINA_UNUSED, Efl_Ui_Text_Data *sd);
static void _unused_item_objs_free(Efl_Ui_Text_Data *sd);
@@ -573,11 +581,7 @@ _update_selection_handler(Eo *obj)
efl_ui_text_interactive_selection_cursors_get(obj, &sel_start, &sel_end);
if (!sd->start_handler)
- {
- const char *file;
- efl_file_get(sd->entry_edje, &file, NULL);
- _create_selection_handlers(obj, sd, file);
- }
+ _create_selection_handlers(obj, sd);
rect = _viewport_region_get(obj);
@@ -896,7 +900,6 @@ EOLIAN static Efl_Ui_Theme_Apply
_efl_ui_text_elm_widget_theme_apply(Eo *obj, Efl_Ui_Text_Data *sd)
{
const char *str;
- const char *style = elm_widget_style_get(obj);
Efl_Ui_Theme_Apply theme_apply;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@@ -917,8 +920,8 @@ _efl_ui_text_elm_widget_theme_apply(Eo *obj, Efl_Ui_Text_Data *sd)
_mirrored_set(obj, efl_ui_mirrored_get(obj));
- elm_widget_theme_object_set
- (obj, sd->entry_edje, "text", _efl_ui_text_theme_group_get(obj), style);
+ elm_widget_element_update(obj, sd->entry_edje,
+ _efl_ui_text_theme_group_get(obj));
if (elm_widget_disabled_get(obj))
edje_object_signal_emit(sd->entry_edje, "elm,state,disabled", "elm");
@@ -964,16 +967,10 @@ _efl_ui_text_elm_widget_theme_apply(Eo *obj, Efl_Ui_Text_Data *sd)
if (sd->scroll)
{
- Efl_Ui_Theme_Apply ok = EFL_UI_THEME_APPLY_FAILED;
-
elm_interface_scrollable_mirrored_set(obj, efl_ui_mirrored_get(obj));
if (sd->single_line)
- ok = elm_widget_theme_object_set
- (obj, sd->scr_edje, "scroller", "entry_single", style);
- if (!ok)
- elm_widget_theme_object_set
- (obj, sd->scr_edje, "scroller", "entry", style);
+ elm_widget_element_update(obj, sd->scr_edje, PART_NAME_SCROLLER);
_efl_ui_text_background_switch(sd->entry_edje, sd->scr_edje);
@@ -993,10 +990,8 @@ _efl_ui_text_elm_widget_theme_apply(Eo *obj, Efl_Ui_Text_Data *sd)
if (sd->start_handler)
{
- elm_widget_theme_object_set(obj, sd->start_handler,
- "text", "handler/start", style);
- elm_widget_theme_object_set(obj, sd->end_handler,
- "text", "handler/end", style);
+ elm_widget_element_update(obj, sd->start_handler, PART_NAME_HANDLER_START);
+ elm_widget_element_update(obj, sd->end_handler, PART_NAME_HANDLER_END);
}
sd->changed = EINA_TRUE;
@@ -1740,7 +1735,7 @@ _magnifier_create(void *data)
//Bg
sd->mgf_bg = edje_object_add(e);
- elm_widget_theme_object_set(data, sd->mgf_bg, "text", "magnifier", "default");
+ elm_widget_element_update(data, sd->mgf_bg, PART_NAME_MAGNIFIER);
evas_object_show(sd->mgf_bg);
//Proxy
@@ -3014,7 +3009,12 @@ _efl_ui_text_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Text_Data *priv)
_dnd_pos_cb, NULL,
_dnd_drop_cb, NULL);
- if (!elm_layout_theme_set(obj, "text", "base", elm_widget_style_get(obj)))
+ if (!elm_widget_theme_klass_get(obj))
+ elm_widget_theme_klass_set(obj, "text");
+ if (!efl_ui_widget_theme_object_set(obj, wd->resize_obj,
+ elm_widget_theme_klass_get(obj),
+ _efl_ui_text_theme_group_get(obj),
+ elm_widget_theme_style_get(obj)))
CRI("Failed to set layout!");
edje_object_part_swallow(priv->entry_edje, "elm.text", text_obj);
@@ -3171,12 +3171,11 @@ _efl_ui_text_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Text_Data *priv)
}
static void
-_create_selection_handlers(Evas_Object *obj, Efl_Ui_Text_Data *sd,
- const char *file)
+_create_selection_handlers(Evas_Object *obj, Efl_Ui_Text_Data *sd)
{
Evas_Object *handle;
- handle = _decoration_create(sd, file, "text/handler/start", EINA_TRUE);
+ handle = _decoration_create(obj, sd, PART_NAME_HANDLER_START, EINA_TRUE);
evas_object_pass_events_set(handle, EINA_FALSE);
sd->start_handler = handle;
evas_object_event_callback_add(handle, EVAS_CALLBACK_MOUSE_DOWN,
@@ -3187,7 +3186,7 @@ _create_selection_handlers(Evas_Object *obj, Efl_Ui_Text_Data *sd,
_start_handler_mouse_up_cb, obj);
evas_object_show(handle);
- handle = _decoration_create(sd, file, "text/handler/end", EINA_TRUE);
+ handle = _decoration_create(obj, sd, PART_NAME_HANDLER_END, EINA_TRUE);
evas_object_pass_events_set(handle, EINA_FALSE);
sd->end_handler = handle;
evas_object_event_callback_add(handle, EVAS_CALLBACK_MOUSE_DOWN,
@@ -3740,9 +3739,7 @@ _efl_ui_text_scrollable_set(Eo *obj, Efl_Ui_Text_Data *sd, Eina_Bool scroll)
{
sd->scr_edje = edje_object_add(evas_object_evas_get(obj));
- elm_widget_theme_object_set
- (obj, sd->scr_edje, "scroller", "entry",
- elm_widget_style_get(obj));
+ elm_widget_element_update(obj, sd->scr_edje, PART_NAME_SCROLLER);
evas_object_size_hint_weight_set
(sd->scr_edje, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -4626,12 +4623,12 @@ _edje_signal_emit(Efl_Ui_Text_Data *sd, const char *sig, const char *src)
}
static inline Eo *
-_decoration_create(Efl_Ui_Text_Data *sd, const char *file,
- const char *source, Eina_Bool above)
+_decoration_create(Eo *obj, Efl_Ui_Text_Data *sd,
+ const char *group_name, Eina_Bool above)
{
Eo *ret = efl_add(EFL_CANVAS_LAYOUT_CLASS, sd->entry_edje);
Eo *text_obj = edje_object_part_swallow_get(sd->entry_edje, "elm.text");
- edje_object_file_set(ret, file, source);
+ elm_widget_element_update(obj, ret, group_name);
evas_object_smart_member_add(ret, sd->entry_edje);
if (above)
{
@@ -4653,10 +4650,8 @@ _decoration_create(Efl_Ui_Text_Data *sd, const char *file,
static void
_create_text_cursors(Eo *obj, Efl_Ui_Text_Data *sd)
{
- const char *file;
- efl_file_get(sd->entry_edje, &file, NULL);
- sd->cursor = _decoration_create(sd, file, "elm/entry/cursor/default", EINA_TRUE);
- sd->cursor_bidi = _decoration_create(sd, file, "elm/entry/cursor/default", EINA_TRUE);
+ sd->cursor = _decoration_create(obj, sd, PART_NAME_CURSOR, EINA_TRUE);
+ sd->cursor_bidi = _decoration_create(obj, sd, PART_NAME_CURSOR, EINA_TRUE);
if (!efl_ui_text_interactive_editable_get(obj))
{
@@ -4745,7 +4740,6 @@ _update_text_selection(Eo *obj, Eo *text_obj)
Eina_Iterator *range;
Efl_Ui_Text_Rectangle *rect;
Eina_Rectangle *r;
- const char *file;
EFL_UI_TEXT_DATA_GET(obj, sd);
@@ -4754,8 +4748,6 @@ _update_text_selection(Eo *obj, Eo *text_obj)
_decoration_calc_offset(sd, &x, &y);
- efl_file_get(sd->entry_edje, &file, NULL);
-
efl_ui_text_interactive_selection_cursors_get(text_obj, &sel_start, &sel_end);
range = efl_canvas_text_range_simple_geometry_get(text_obj,
@@ -4770,7 +4762,7 @@ _update_text_selection(Eo *obj, Eo *text_obj)
rect = calloc(1, sizeof(Efl_Ui_Text_Rectangle));
sd->sel = eina_list_append(sd->sel, rect);
- rect->obj_bg = _decoration_create(sd, file, "elm/entry/selection/default", EINA_FALSE);
+ rect->obj_bg = _decoration_create(obj, sd, PART_NAME_SELECTION, EINA_FALSE);
evas_object_show(rect->obj_bg);
}
else
@@ -5084,13 +5076,10 @@ _anchors_update(Eo *o, Efl_Ui_Text_Data *sd)
Evas_Object *smart, *clip;
Efl_Ui_Text_Rectangle *rect;
Anchor *an;
- const char *file;
Eo *sw;
sw = edje_object_part_swallow_get(sd->entry_edje, "elm.text");
- efl_file_get(sd->entry_edje, &file, NULL);
-
if (!sd->deferred_decoration_anchor) return;
sd->deferred_decoration_anchor = EINA_FALSE;
@@ -5198,7 +5187,7 @@ _anchors_update(Eo *o, Efl_Ui_Text_Data *sd)
rect = calloc(1, sizeof(Efl_Ui_Text_Rectangle));
an->sel = eina_list_append(an->sel, rect);
- ob = _decoration_create(sd, file, "elm/entry/anchor/default", EINA_TRUE);
+ ob = _decoration_create(o, sd, PART_NAME_ANCHOR, EINA_TRUE);
rect->obj_fg = ob;
/* Create hit rectangle to catch events */
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 457d65db01..0c9ce584df 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -4570,6 +4570,7 @@ _efl_ui_win_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Win_Data *_pd EINA_UNUSED
{
efl_canvas_group_add(efl_super(obj, MY_CLASS));
+ elm_widget_theme_klass_set(obj, "win");
elm_widget_can_focus_set(obj, EINA_TRUE);
elm_widget_highlight_ignore_set(obj, EINA_TRUE);