diff --git a/legacy/elementary/ChangeLog b/legacy/elementary/ChangeLog index 182bd4ea64..676c460bd2 100644 --- a/legacy/elementary/ChangeLog +++ b/legacy/elementary/ChangeLog @@ -1360,3 +1360,7 @@ 2013-05-23 Daniel Juyung Seo (SeoZ) * Fix colorselector color change but when palette item is selected. + +2013-05-23 Ryuan Choi (ryuan) + + * Fix elm_colorselector does not emit "changed" when clicked color palatte. diff --git a/legacy/elementary/NEWS b/legacy/elementary/NEWS index 1dba3b8a44..0ff4e8e23d 100644 --- a/legacy/elementary/NEWS +++ b/legacy/elementary/NEWS @@ -231,6 +231,7 @@ Fixes: * Fix remained ecore timer issue when gesture layer was deleted. * Fix ctxpopup can't be called again in the mobile mode entry. * Fix colorselector color change but when palette item is selected. + * Fix elm_colorselector does not emit "changed" when clicked color palatte. Removals: diff --git a/legacy/elementary/src/bin/test_colorselector.c b/legacy/elementary/src/bin/test_colorselector.c index 6af446f3d7..fe26cc6cea 100644 --- a/legacy/elementary/src/bin/test_colorselector.c +++ b/legacy/elementary/src/bin/test_colorselector.c @@ -23,13 +23,13 @@ _colorselector_clicked_cb(void *data, Evas_Object *obj, } static void -_colorpalette_clicked_cb(void *data, Evas_Object *obj __UNUSED__, +_colorpalette_clicked_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) { int r = 0, g = 0, b = 0 ,a = 0; Elm_Object_Item *color_it = (Elm_Object_Item *) event_info; elm_colorselector_palette_item_color_get(color_it, &r, &g, &b, &a); - evas_object_color_set((Evas_Object *) data, r, g, b , a); + printf("Selected Color Palette [r=%d g=%d b=%d a=%d]\n", r, g, b, a); } static void diff --git a/legacy/elementary/src/lib/elm_colorselector.c b/legacy/elementary/src/lib/elm_colorselector.c index aec645b3c0..6c8551b331 100644 --- a/legacy/elementary/src/lib/elm_colorselector.c +++ b/legacy/elementary/src/lib/elm_colorselector.c @@ -383,6 +383,9 @@ _colors_set(Evas_Object *obj, ELM_COLORSELECTOR_DATA_GET(obj, sd); + if ((sd->r == r) && (sd->g == g) && (sd->b == b) && (sd->a == a)) + return; + sd->r = r; sd->g = g; sd->b = b; @@ -417,6 +420,7 @@ _colors_set(Evas_Object *obj, (sd->cb_data[3]->colorbar, "elm.arrow", x, y); _rectangles_redraw(sd->cb_data[3], x); + evas_object_smart_callback_call(obj, SIG_CHANGED, NULL); } static void @@ -442,20 +446,16 @@ _entry_changed_cb(void *data, switch (i) { case 0: - if (v != sd->r) - _colors_set(parent, v, sd->g, sd->b, sd->a); + _colors_set(parent, v, sd->g, sd->b, sd->a); break; case 1: - if (v != sd->g) - _colors_set(parent, sd->r, v, sd->b, sd->a); + _colors_set(parent, sd->r, v, sd->b, sd->a); break; case 2: - if (v != sd->b) - _colors_set(parent, sd->r, sd->g, v, sd->a); + _colors_set(parent, sd->r, sd->g, v, sd->a); break; case 3: - if (v != sd->a) - _colors_set(parent, sd->r, sd->g, sd->b, v); + _colors_set(parent, sd->r, sd->g, sd->b, v); break; } }