elementary : Backport 82853.
authorWooHyun Jung <woohyun0705@gmail.com>
Wed, 16 Jan 2013 04:54:58 +0000 (04:54 +0000)
committerWooHyun Jung <woohyun0705@gmail.com>
Wed, 16 Jan 2013 04:54:58 +0000 (04:54 +0000)
SVN revision: 82854

ChangeLog
NEWS
src/lib/elm_widget.c

index 1b11838..4f76b40 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 2013-01-16  WooHyun Jung
 
         * elm_plug should call elm_widget_can_focus_set after adding parent class.
+
+2013-01-16  WooHyun Jung
+
+        * Now, widget itself is the object which gets mouse_up event for stealing focus from another object. By this change, a widget with scroller interface can change its focus state before mouse_up of hit_rect.
diff --git a/NEWS b/NEWS
index 248d15a..578c9d2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,7 @@ Fixes:
    * Fix the bug which the callbacks of the sub-object are added even if the sub-object is added the parent object.
    * Fix "changed" signal being sent twice in case of toggle style when check is clicked.
    * elm_plug should call elm_widget_can_focus_set after adding parent class.
+   * Now, widget itself is the object which gets mouse_up event for stealing focus from another object. By this change, a widget with scroller interface can change its focus state before mouse_up of hit_rect.
 
 Changes since Elementary 1.7.4:
 -------------------------
index 2e2790d..992d6d9 100644 (file)
@@ -690,10 +690,10 @@ _sub_obj_hide(void        *data __UNUSED__,
 }
 
 static void
-_sub_obj_mouse_down(void        *data,
-                    Evas        *e __UNUSED__,
-                    Evas_Object *obj __UNUSED__,
-                    void        *event_info)
+_obj_mouse_down(void        *data,
+                Evas        *e __UNUSED__,
+                Evas_Object *obj __UNUSED__,
+                void        *event_info)
 {
    Elm_Widget_Smart_Data *sd = data;
    Evas_Event_Mouse_Down *ev = event_info;
@@ -702,10 +702,10 @@ _sub_obj_mouse_down(void        *data,
 }
 
 static void
-_sub_obj_mouse_move(void        *data,
-                    Evas        *e __UNUSED__,
-                    Evas_Object *obj,
-                    void        *event_info)
+_obj_mouse_move(void        *data,
+                Evas        *e __UNUSED__,
+                Evas_Object *obj,
+                void        *event_info)
 {
    Elm_Widget_Smart_Data *sd = data;
    Evas_Event_Mouse_Move *ev = event_info;
@@ -725,10 +725,10 @@ _sub_obj_mouse_move(void        *data,
 }
 
 static void
-_sub_obj_mouse_up(void        *data,
-                  Evas        *e __UNUSED__,
-                  Evas_Object *obj,
-                  void        *event_info __UNUSED__)
+_obj_mouse_up(void        *data,
+              Evas        *e __UNUSED__,
+              Evas_Object *obj,
+              void        *event_info __UNUSED__)
 {
    Elm_Widget_Smart_Data *sd = data;
    if (sd->still_in)
@@ -1724,16 +1724,6 @@ elm_widget_resize_object_set(Evas_Object *obj,
    if (sd->resize_obj)
      {
         evas_object_clip_unset(sd->resize_obj);
-
-        evas_object_event_callback_del_full(sd->resize_obj,
-                                            EVAS_CALLBACK_MOUSE_DOWN,
-                                            _sub_obj_mouse_down, sd);
-        evas_object_event_callback_del_full(sd->resize_obj,
-                                            EVAS_CALLBACK_MOUSE_MOVE,
-                                            _sub_obj_mouse_move, sd);
-        evas_object_event_callback_del_full(sd->resize_obj,
-                                            EVAS_CALLBACK_MOUSE_UP,
-                                            _sub_obj_mouse_up, sd);
         evas_object_smart_member_del(sd->resize_obj);
 
         if (_elm_widget_is(sd->resize_obj))
@@ -1745,7 +1735,19 @@ elm_widget_resize_object_set(Evas_Object *obj,
      }
 
    sd->resize_obj = sobj;
-   if (!sobj) return;
+   if (!sobj)
+     {
+        evas_object_event_callback_del_full(obj,
+                                            EVAS_CALLBACK_MOUSE_DOWN,
+                                            _obj_mouse_down, sd);
+        evas_object_event_callback_del_full(obj,
+                                            EVAS_CALLBACK_MOUSE_MOVE,
+                                            _obj_mouse_move, sd);
+        evas_object_event_callback_del_full(obj,
+                                            EVAS_CALLBACK_MOUSE_UP,
+                                            _obj_mouse_up, sd);
+        return;
+     }
 
    // orphan new resize obj
    parent = evas_object_data_get(sobj, "elm-parent");
@@ -1767,12 +1769,12 @@ elm_widget_resize_object_set(Evas_Object *obj,
 
    evas_object_smart_member_add(sobj, obj);
 
-   evas_object_event_callback_add(sobj, EVAS_CALLBACK_MOUSE_DOWN,
-                                  _sub_obj_mouse_down, sd);
-   evas_object_event_callback_add(sobj, EVAS_CALLBACK_MOUSE_MOVE,
-                                  _sub_obj_mouse_move, sd);
-   evas_object_event_callback_add(sobj, EVAS_CALLBACK_MOUSE_UP,
-                                  _sub_obj_mouse_up, sd);
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN,
+                                  _obj_mouse_down, sd);
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_MOVE,
+                                  _obj_mouse_move, sd);
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_UP,
+                                  _obj_mouse_up, sd);
    _smart_reconfigure(sd);
 }