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;
 };
 
 /**

-- 


Reply via email to