From cff3bfb61bd8fa9dac400594cc5add54cdefbe4a Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 23 Nov 2012 11:24:39 +0000 Subject: [PATCH] oooh fix some infinite loops in entry .. and oh so much make color specture.selector/sliders WORK again... properly. SVN revision: 79557 --- src/bin/e_color_dialog.c | 2 +- src/bin/e_entry.c | 15 +- src/bin/e_widget_csel.c | 42 +++--- src/bin/e_widget_cslider.c | 286 ++++++++++++++++++++---------------- src/bin/e_widget_spectrum.c | 2 +- 5 files changed, 196 insertions(+), 151 deletions(-) diff --git a/src/bin/e_color_dialog.c b/src/bin/e_color_dialog.c index ba78228de..3cf4c05be 100644 --- a/src/bin/e_color_dialog.c +++ b/src/bin/e_color_dialog.c @@ -39,7 +39,7 @@ e_color_dialog_new(E_Container *con, const E_Color *color, Eina_Bool alpha_enabl o = e_widget_csel_add(dia->dia->win->evas, dia->color, alpha_enabled); evas_object_show(o); e_widget_size_min_get(o, &mw, &mh); - e_dialog_content_set(dia->dia, o, 460, 260); + e_dialog_content_set(dia->dia, o, mw, mh); e_widget_on_change_hook_set(o, _e_color_dialog_cb_csel_change, dia); /* buttons at the bottom */ diff --git a/src/bin/e_entry.c b/src/bin/e_entry.c index 636bee605..ed676249d 100644 --- a/src/bin/e_entry.c +++ b/src/bin/e_entry.c @@ -17,6 +17,7 @@ struct _E_Entry_Smart_Data Evas_Coord theme_height; int preedit_start_pos; int preedit_end_pos; + int changing; Eina_Bool enabled : 1; Eina_Bool noedit : 1; Eina_Bool focused : 1; @@ -105,6 +106,7 @@ e_entry_text_set(Evas_Object *entry, const char *_text) { E_Entry_Smart_Data *sd; char *text = NULL; + const char *otext; if (evas_object_smart_smart_get(entry) != _e_entry_smart) SMARTERRNR(); if ((!entry) || (!(sd = evas_object_smart_data_get(entry)))) @@ -113,12 +115,15 @@ e_entry_text_set(Evas_Object *entry, const char *_text) text = evas_textblock_text_utf8_to_markup( edje_object_part_object_get(sd->entry_object, ENTRY_PART_NAME), _text); - if ((text) && (_text) && (!strcmp(text, _text))) return; - if ((!text) && (!_text)) return; + otext = edje_object_part_text_get(sd->entry_object, ENTRY_PART_NAME); + if ((text) && (otext) && (!strcmp(text, otext))) return; + if ((!text) && (!otext)) return; edje_object_part_text_set(sd->entry_object, ENTRY_PART_NAME, text); + sd->changing++; + edje_object_message_signal_process(sd->entry_object); + sd->changing--; evas_object_smart_callback_call(entry, "changed", NULL); - if (text) - free(text); + if (text) free(text); } /** @@ -657,7 +662,7 @@ _entry_changed_signal_cb(void *data, if ((!object) || !(sd = evas_object_smart_data_get(object))) return; - + if (sd->changing) return; evas_object_smart_callback_call(object, "changed", NULL); edje_object_size_min_calc(sd->entry_object, &sd->min_width, &sd->height); _entry_recalc_size(object); diff --git a/src/bin/e_widget_csel.c b/src/bin/e_widget_csel.c index 5d1ffe4f2..14f5452a2 100644 --- a/src/bin/e_widget_csel.c +++ b/src/bin/e_widget_csel.c @@ -128,14 +128,14 @@ _e_wid_cb_color_changed(void *data, Evas_Object *o) } /* update the spectrum */ - if (o != wd->spectrum && changed != -1) + if (o != wd->spectrum/* && changed != -1*/) { if (wd->mode == changed || (wd->mode >= E_COLOR_COMPONENT_H && changed <= E_COLOR_COMPONENT_B) || (wd->mode <= E_COLOR_COMPONENT_B && changed >= E_COLOR_COMPONENT_H)) e_widget_spectrum_update(wd->spectrum, 1); else - e_widget_spectrum_update(wd->spectrum, 0); + e_widget_spectrum_update(wd->spectrum, 1); } e_widget_color_well_update(wd->well); @@ -152,26 +152,23 @@ _e_wid_cb_color_changed(void *data, Evas_Object *o) case E_COLOR_COMPONENT_R: snprintf(buf, 10, "%i", wd->cv->r); break; - case E_COLOR_COMPONENT_G: snprintf(buf, 10, "%i", wd->cv->g); break; - case E_COLOR_COMPONENT_B: snprintf(buf, 10, "%i", wd->cv->b); break; - case E_COLOR_COMPONENT_H: snprintf(buf, 10, "%.0f", wd->cv->h); break; - case E_COLOR_COMPONENT_S: snprintf(buf, 10, "%.2f", wd->cv->s); break; - case E_COLOR_COMPONENT_V: snprintf(buf, 10, "%.2f", wd->cv->v); break; + default: + break; } e_widget_entry_text_set(eo, buf); i++; @@ -197,7 +194,8 @@ e_widget_csel_add(Evas *evas, E_Color *color, Eina_Bool alpha_enabled) E_Radio_Group *grp = NULL; char *labels[6] = { N_("R"), N_("G"), N_("B"), N_("H"), N_("S"), N_("V") }; E_Widget_Data *wd; - + Evas_Coord mw, mh; + obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); @@ -245,6 +243,9 @@ e_widget_csel_add(Evas *evas, E_Color *color, Eina_Bool alpha_enabled) case E_COLOR_COMPONENT_V: snprintf(wd->values[i], 10, "%.2f", wd->cv->v); break; + + default: + break; } o = e_widget_radio_add(evas, _(labels[i]), i, grp); @@ -257,13 +258,14 @@ e_widget_csel_add(Evas *evas, E_Color *color, Eina_Bool alpha_enabled) evas_object_show(o); wd->sliders = eina_list_append(wd->sliders, o); e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd); - e_widget_table_object_append(frame, o, 1, i, 1, 1, 1, 1, 1, 0); + e_widget_size_min_set(o, 32, 16); + e_widget_table_object_append(frame, o, 1, i, 6, 1, 1, 1, 1, 0); o = e_widget_entry_add(evas, &(wd->values[i]), NULL, NULL, NULL); e_widget_sub_object_add(obj, o); evas_object_show(o); wd->entries = eina_list_append(wd->entries, o); - e_widget_table_object_append(frame, o, 2, i, 1, 1, 1, 1, 1, 1); + e_widget_table_object_append(frame, o, 7, i, 1, 1, 1, 1, 1, 0); e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd); } @@ -274,33 +276,37 @@ e_widget_csel_add(Evas *evas, E_Color *color, Eina_Bool alpha_enabled) o = e_widget_slider_add(evas, 1, 0, "%0.0f", 0, 255, 1, 0, NULL, &(wd->cv->a), 100); e_widget_on_change_hook_set(o, _e_wid_cb_alpha_changed, wd); - e_widget_table_object_append(frame, o, 1, i, 2, 1, 1, 1, 0, 0); + e_widget_table_object_append(frame, o, 1, i, 10, 1, 1, 1, 0, 0); } + e_widget_table_object_append(table, frame, 2, 0, 1, 2, 1, 0, 1, 0); + o = e_widget_spectrum_add(evas, wd->mode, wd->cv); e_widget_sub_object_add(obj, o); evas_object_show(o); e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd); wd->spectrum = o; - e_widget_table_object_append(table, o, 1, 1, 1, 1, 1, 1, 1, 1); + e_widget_size_min_set(o, 120, 120); + e_widget_table_object_append(table, o, 0, 0, 1, 2, 1, 1, 1, 1); o = e_widget_cslider_add(evas, wd->mode, wd->cv, 1, 1); e_widget_sub_object_add(obj, o); e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd); - e_widget_size_min_set(o, 30, 50); + e_widget_size_min_set(o, 16, 16); evas_object_show(o); wd->vert = o; - e_widget_table_object_append(table, o, 2, 1, 1, 1, 0, 1, 0, 1); - - e_widget_table_object_append(table, frame, 3, 1, 1, 1, 1, 1, 1, 1); + e_widget_table_object_append(table, o, 1, 0, 1, 2, 0, 1, 0, 1); o = e_widget_color_well_add(evas, wd->cv, 0); e_widget_sub_object_add(obj, o); evas_object_show(o); - evas_object_resize(o, 20, 20); wd->well = o; - e_widget_table_object_append(table, o, 3, 2, 1, 1, 1, 1, 1, 1); + e_widget_size_min_set(o, 32, 32); + e_widget_table_object_append(table, o, 0, 2, 3, 1, 1, 1, 0, 0); + e_widget_size_min_get(table, &mw, &mh); + e_widget_size_min_set(obj, mw, mh); + return obj; } diff --git a/src/bin/e_widget_cslider.c b/src/bin/e_widget_cslider.c index 4187bcb63..d63f20b1f 100644 --- a/src/bin/e_widget_cslider.c +++ b/src/bin/e_widget_cslider.c @@ -8,8 +8,6 @@ struct _E_Widget_Data Evas_Object *o_grad; Evas_Object *o_event; - Eina_List *o_hgrad; - Evas_Coord x, y, w, h; int vertical; @@ -37,9 +35,9 @@ static void _e_wid_cb_drag_start(void *data, Evas_Object *obj, const char *emiss static void _e_wid_cb_drag_stop(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_wid_cb_drag(void *data, Evas_Object *obj, const char *emission, const char *source); -/* static void _e_wid_cb_down(void *data, Evas *e, Evas_Object *obj, void *event_info); */ -/* static void _e_wid_cb_move(void *data, Evas *e, Evas_Object *obj, void *event_info); */ -/* static void _e_wid_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info); */ +static void _e_wid_cb_down(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _e_wid_cb_move(void *data, Evas *e, Evas_Object *obj, void *event_info); + static void _e_wid_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info); Evas_Object * e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int vertical, int fixed) @@ -63,7 +61,6 @@ e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int ver wd->mode = mode; wd->color = color; wd->prev = calloc(1, sizeof (E_Color)); - wd->o_hgrad = NULL; o = edje_object_add(evas); wd->o_cslider = o; @@ -76,6 +73,8 @@ e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int ver evas_object_show(o); edje_object_size_min_calc(o, &mw, &mh); e_widget_size_min_set(obj, mw, mh); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, _e_wid_move, wd); + evas_object_event_callback_add(o, EVAS_CALLBACK_RESIZE, _e_wid_resize, wd); edje_object_signal_callback_add(wd->o_cslider, "drag,start", "*", _e_wid_cb_drag_start, obj); edje_object_signal_callback_add(wd->o_cslider, "drag", "*", _e_wid_cb_drag, obj); @@ -86,19 +85,19 @@ e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int ver e_widget_resize_object_set(obj, o); /* add gradient obj */ - o = evas_object_rectangle_add(evas); + o = evas_object_image_filled_add(evas); e_widget_sub_object_add(obj, o); - /* evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_cb_down, obj); */ - /* evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_wid_cb_move, obj); */ - /* evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_wid_cb_up, obj); */ + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_cb_down, obj); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_wid_cb_move, obj); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_wid_cb_up, obj); evas_object_color_set(o, 255, 255, 255, 255); wd->o_grad = o; edje_object_part_swallow(wd->o_cslider, "e.swallow.content", o); o = evas_object_rectangle_add(evas); + evas_object_repeat_events_set(o, EINA_TRUE); e_widget_sub_object_add(obj, o); - evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, _e_wid_move, wd); evas_object_show(o); evas_object_color_set(o, 0, 0, 0, 0); wd->o_event = o; @@ -112,11 +111,11 @@ static void _e_wid_move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { E_Widget_Data *wd; - /* Evas_Coord x, y; */ + Evas_Coord x, y; wd = data; - /* evas_object_geometry_get(obj, &x, &y, NULL, NULL); */ - /* evas_object_move(wd->o_grad, x, y); */ + evas_object_geometry_get(obj, &x, &y, NULL, NULL); + evas_object_move(wd->o_event, x, y); _e_wid_update(wd); } @@ -124,11 +123,11 @@ static void _e_wid_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { E_Widget_Data *wd; - /* Evas_Coord w, h; */ + Evas_Coord w, h; wd = data; - /* evas_object_geometry_get(obj, NULL, NULL, &w, &h); */ - /* evas_object_resize(wd->o_grad, w, h); */ + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + evas_object_resize(wd->o_event, w, h); _e_wid_update(wd); } @@ -217,8 +216,6 @@ _e_wid_update(E_Widget_Data *wd) if (changed) { - Evas_Object *o; - if (wd->fixed) _e_wid_update_fixed(wd); else @@ -227,17 +224,6 @@ _e_wid_update(E_Widget_Data *wd) wd->x = x; wd->y = y; wd->w = w; wd->h = h; memcpy(wd->prev, wd->color, sizeof (E_Color)); - - if (wd->mode != E_COLOR_COMPONENT_H) - { - EINA_LIST_FREE(wd->o_hgrad, o) - evas_object_del(o); - evas_object_show(wd->o_grad); - } - else - { - evas_object_hide(wd->o_grad); - } } } @@ -246,37 +232,70 @@ _e_wid_gradient_set(Evas_Object *o, Eina_Bool orientation, int rf, int gf, int bf, int rt, int gt, int bt) { - static Evas_Map *m = NULL; - - if (!m) m = evas_map_new(4); - evas_map_util_points_populate_from_object(m, o); - - if (orientation) - { - evas_map_point_color_set(m, 0, rf, gf, bf, 255); - evas_map_point_color_set(m, 1, rf, gf, bf, 255); - evas_map_point_color_set(m, 2, rt, gt, bt, 255); - evas_map_point_color_set(m, 3, rt, gt, bt, 255); - } + unsigned int *pixels, *p; + int x, r, g, b; + + if (!orientation) + evas_object_image_size_set(o, 256, 1); else + evas_object_image_size_set(o, 1, 256); + pixels = evas_object_image_data_get(o, EINA_TRUE); + if (pixels) { - /* Rotate by 270° */ - evas_map_point_color_set(m, 0, rf, gf, bf, 255); - evas_map_point_color_set(m, 1, rt, gt, bt, 255); - evas_map_point_color_set(m, 2, rt, gt, bt, 255); - evas_map_point_color_set(m, 3, rf, gf, bf, 255); + p = pixels; + for (x = 0; x < 256; x++) + { + r = ((rf * (255 - x)) + (rt * x)) / 255; + g = ((gf * (255 - x)) + (gt * x)) / 255; + b = ((bf * (255 - x)) + (bt * x)) / 255; + *p = 0xff000000 | (r << 16) | (g << 8) | (b); + p++; + } + evas_object_image_data_set(o, pixels); + evas_object_image_data_update_add(o, 0, 0, 256, 256); } +} - evas_object_map_enable_set(o, 1); - evas_object_map_set(o, m); +static void +_e_wid_gradient_range_set(Evas_Object *o, Eina_Bool orientation, + int rf, int gf, int bf, + int rt, int gt, int bt, + int from, int to) +{ + unsigned int *pixels, *p; + int x, r, g, b, v, t; + + if (from < 0) from = 0; + if (from > 255) from = 255; + if (to < 0) to = 0; + if (to > 256) to = 256; + if (to <= from) return; + if (!orientation) + evas_object_image_size_set(o, 256, 1); + else + evas_object_image_size_set(o, 1, 256); + pixels = evas_object_image_data_get(o, EINA_TRUE); + if (pixels) + { + t = to - from; + p = pixels + from; + for (x = from; x < to; x++) + { + v = x - from; + r = ((rf * (t - v)) + (rt * v)) / t; + g = ((gf * (t - v)) + (gt * v)) / t; + b = ((bf * (t - v)) + (bt * v)) / t; + *p = 0xff000000 | (r << 16) | (g << 8) | (b); + p++; + } + evas_object_image_data_set(o, pixels); + evas_object_image_data_update_add(o, 0, 0, 256, 256); + } } static void _e_wid_update_standard(E_Widget_Data *wd) { - Evas_Object *o; - Eina_List *l; - Evas_Coord x, y, w, h; int r, g, b; int rd, gd, bd; int max, min; @@ -316,40 +335,12 @@ _e_wid_update_standard(E_Widget_Data *wd) break; case E_COLOR_COMPONENT_H: evas_color_hsv_to_rgb(0, wd->color->s, wd->color->v, &max, &min, NULL); - - if (!wd->o_hgrad) - { - Evas *e; - - e = evas_object_evas_get(wd->o_grad); - for (i = 0; i < 6; ++i) - wd->o_hgrad = eina_list_append(wd->o_hgrad, - evas_object_rectangle_add(e)); - } - - evas_object_geometry_get(wd->o_grad, &x, &y, &w, &h); - evas_object_hide(wd->o_grad); - - i = 0; - EINA_LIST_FOREACH(wd->o_hgrad, l, o) - { - if (wd->vertical) - { - evas_object_move(o, x, y + (i * h) / 6); - evas_object_resize(o, w, h / 6); - } - else - { - evas_object_move(o, x + (i * w) / 6, y); - evas_object_resize(o, w / 6, h); - } - - _e_wid_gradient_set(o, wd->vertical, - *grad[i][0], *grad[i][1], *grad[i][2], - *grad[i + 1][0], *grad[i + 1][1], *grad[i + 1][2]); - evas_object_show(o); - i++; - } + for (i = 0; i < 6; i++) + _e_wid_gradient_range_set(wd->o_grad, wd->vertical, + *grad[i][0], *grad[i][1], *grad[i][2], + *grad[i + 1][0], *grad[i + 1][1], *grad[i + 1][2], + ((i + 0) * 256) / 6, + ((i + 1) * 256) / 6); vx = wd->color->h / 360.0; break; case E_COLOR_COMPONENT_S: @@ -370,7 +361,7 @@ _e_wid_update_standard(E_Widget_Data *wd) rd, gd, bd); vx = wd->color->v; break; - case E_COLOR_COMPONENT_MAX: + default: break; } @@ -383,10 +374,6 @@ _e_wid_update_fixed(E_Widget_Data *wd) { #define GMAX 255 #define GMIN 0 - - Evas_Object *o; - Eina_List *l; - Evas_Coord x, y, w, h; unsigned int i; float vx = 0; int grad[7][3] = { @@ -432,40 +419,12 @@ _e_wid_update_fixed(E_Widget_Data *wd) * 300 x n x * 360 x n n */ - - if (!wd->o_hgrad) - { - Evas *e; - - e = evas_object_evas_get(wd->o_grad); - for (i = 0; i < 6; ++i) - wd->o_hgrad = eina_list_append(wd->o_hgrad, - evas_object_rectangle_add(e)); - } - - evas_object_geometry_get(wd->o_grad, &x, &y, &w, &h); - evas_object_hide(wd->o_grad); - - i = 0; - EINA_LIST_FOREACH(wd->o_hgrad, l, o) - { - if (wd->vertical) - { - evas_object_move(o, x, y + (i * h) / 6); - evas_object_resize(o, w, h / 6); - } - else - { - evas_object_move(o, x + (i * w) / 6, y); - evas_object_resize(o, w / 6, h); - } - - _e_wid_gradient_set(o, wd->vertical, - grad[i][0], grad[i][1], grad[i][2], - grad[i + 1][0], grad[i + 1][1], grad[i + 1][2]); - evas_object_show(o); - i++; - } + for (i = 0; i < 6; i++) + _e_wid_gradient_range_set(wd->o_grad, wd->vertical, + grad[i][0], grad[i][1], grad[i][2], + grad[i + 1][0], grad[i + 1][1], grad[i + 1][2], + ((i + 0) * 256) / 6, + ((i + 1) * 256) / 6); vx = wd->color->h / 360.0; break; case E_COLOR_COMPONENT_S: @@ -480,7 +439,7 @@ _e_wid_update_fixed(E_Widget_Data *wd) 0, 0, 0); vx = wd->color->v; break; - case E_COLOR_COMPONENT_MAX: + default: break; } @@ -588,3 +547,78 @@ _e_wid_cb_drag(void *data, Evas_Object *obj __UNUSED__, const char *emission __U _e_wid_value_set(o_wid, val); } } + +static void +_e_wid_mouse_handle(Evas_Object *obj, int mx, int my) +{ + E_Widget_Data *wd; + Evas_Coord x, y, w, h; + double vx = 0.0, vy = 0.0; + + wd = e_widget_data_get(obj); + + evas_object_geometry_get(wd->o_grad, &x, &y, &w, &h); + if (w > 1) vx = (mx - x) / (double)(w - 1); + if (h > 1) vy = (my - y) / (double)(h - 1); + if (vx > 1) vx = 1; + if (vx < 0) vx = 0; + if (vy > 1) vy = 1; + if (vy < 0) vy = 0; + + + if (wd->vertical) + { + _e_wid_value_set(obj, 1.0 - vy); + edje_object_part_drag_value_set(wd->o_cslider, "e.dragable.cursor", 0.5, 1.0 - vy); + } + else + { + _e_wid_value_set(obj, vx); + edje_object_part_drag_value_set(wd->o_cslider, "e.dragable.cursor", vx, 0.5); + } + e_widget_change(obj); +} + + +static void +_e_wid_cb_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Evas_Event_Mouse_Down *ev; + Evas_Object *o_wid; + E_Widget_Data *wd; + + o_wid = data; + wd = e_widget_data_get(o_wid); + ev = event_info; + + wd->dragging = 1; + _e_wid_mouse_handle(o_wid, ev->canvas.x, ev->canvas.y); +} + +static void +_e_wid_cb_up(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Evas_Object *o_wid; + E_Widget_Data *wd; + + o_wid = data; + wd = e_widget_data_get(o_wid); + wd->dragging = 0; +} + +static void +_e_wid_cb_move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Evas_Event_Mouse_Move *ev; + Evas_Object *o_wid; + E_Widget_Data *wd; + + o_wid = data; + wd = e_widget_data_get(o_wid); + ev = event_info; + + if (wd->dragging == 1) + { + _e_wid_mouse_handle(o_wid, ev->cur.canvas.x, ev->cur.canvas.y); + } +} diff --git a/src/bin/e_widget_spectrum.c b/src/bin/e_widget_spectrum.c index 2e91400cd..b6ae029b1 100644 --- a/src/bin/e_widget_spectrum.c +++ b/src/bin/e_widget_spectrum.c @@ -68,9 +68,9 @@ e_widget_spectrum_add(Evas *evas, E_Color_Component mode, E_Color *cv) evas_object_show(o); wd->o_spectrum = o; edje_object_part_swallow(wd->o_edje, "e.swallow.content", o); - edje_extern_object_min_size_set(o, 100, 100); o = evas_object_rectangle_add(evas); + evas_object_repeat_events_set(o, EINA_TRUE); evas_object_color_set(o, 0, 0, 0, 0); e_widget_sub_object_add(obj, o); evas_object_show(o);