woohyun pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=f5ab22a2f1230f7d201e928e6c689010bbac97d8
commit f5ab22a2f1230f7d201e928e6c689010bbac97d8 Author: WooHyun Jung <wh0705.j...@samsung.com> Date: Sat Aug 1 13:15:05 2015 +0900 colorselector: fixed up the selected process When mouse moves out of the color item area, mouse up should not give selected smart callback. @fix --- src/lib/elm_colorselector.c | 30 ++++++++++++++++++++++++++++++ src/lib/elm_widget_colorselector.h | 2 ++ 2 files changed, 32 insertions(+) diff --git a/src/lib/elm_colorselector.c b/src/lib/elm_colorselector.c index 4155cbb..639f939 100644 --- a/src/lib/elm_colorselector.c +++ b/src/lib/elm_colorselector.c @@ -1387,6 +1387,31 @@ _on_color_pressed(void *data, ecore_timer_del(sd->longpress_timer); sd->longpress_timer = ecore_timer_add (_elm_config->longpress_timeout, _on_color_long_press, data); + + item->still_in = EINA_TRUE; +} + +static void +_on_color_moved(void *data, + Evas *e EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, + void *event_info) +{ + Elm_Color_Item_Data *item = (Elm_Color_Item_Data *)data; + Evas_Event_Mouse_Move *ev = event_info; + Evas_Coord x = 0, y = 0, w = 0, h = 0; + + if (!item) return; + + ELM_COLORSELECTOR_DATA_GET(WIDGET(item), sd); + + evas_object_geometry_get(item->color_obj, &x, &y, &w, &h); + + if (ELM_RECTS_POINT_OUT(x, y, w, h, ev->cur.canvas.x, ev->cur.canvas.y)) + { + ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del); + item->still_in = EINA_FALSE; + } } static void @@ -1407,6 +1432,9 @@ _on_color_released(void *data, if (ev->button != 1) return; ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del); + if ((ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) || !item->still_in) + return; + elm_object_signal_emit(VIEW(item), "elm,state,selected", "elm"); elm_colorselector_color_set(WIDGET(item), item->color->r, item->color->g, item->color->b, item->color->a); @@ -1522,6 +1550,8 @@ _elm_color_item_eo_base_constructor(Eo *eo_item, Elm_Color_Item_Data *item) evas_object_event_callback_add (item->color_obj, EVAS_CALLBACK_MOUSE_DOWN, _on_color_pressed, item); evas_object_event_callback_add + (item->color_obj, EVAS_CALLBACK_MOUSE_MOVE, _on_color_moved, item); + evas_object_event_callback_add (item->color_obj, EVAS_CALLBACK_MOUSE_UP, _on_color_released, item); elm_object_part_content_set(VIEW(item), "color_obj", item->color_obj); diff --git a/src/lib/elm_widget_colorselector.h b/src/lib/elm_widget_colorselector.h index 7ff52c6..ba4cc10 100644 --- a/src/lib/elm_widget_colorselector.h +++ b/src/lib/elm_widget_colorselector.h @@ -96,6 +96,8 @@ struct _Elm_Color_Item_Data Evas_Object *color_obj; Elm_Color_RGBA *color; + + Eina_Bool still_in : 1; }; /** --