bug fix - add to click the done button in view of user edit 58/48858/1
authorSoohye Shin <soohye.shin@samsung.com>
Thu, 1 Oct 2015 02:22:45 +0000 (11:22 +0900)
committerSoohye Shin <soohye.shin@samsung.com>
Thu, 1 Oct 2015 02:22:45 +0000 (11:22 +0900)
Change-Id: Ie77dcc55442b050f5141bfc5e52a738436a4eb22
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
src/view/view_user_edit.c

index bd901d1..4eca556 100644 (file)
@@ -137,8 +137,8 @@ static void _key_up(int id, void *data, Evas *e, Evas_Object *obj,
 static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Down *ev);
 
-static void _mouse_up(int id, void *data, Evas *e, Evas_Object *obj,
-               Evas_Event_Mouse_Up *ev);
+static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Mouse_Down *ev);
 
 static void _mouse_move(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Mouse_Move *ev)
@@ -152,7 +152,7 @@ static input_handler handler = {
        .unfocused = _unfocused,
        .key_up = _key_up,
        .key_down = _key_down,
-       .mouse_up = _mouse_up,
+       .mouse_down = _mouse_down,
        .mouse_move = _mouse_move
 };
 
@@ -651,6 +651,47 @@ static void _disable_pin(struct _priv *priv)
        }
 }
 
+static bool _check_done(struct _priv *priv)
+{
+       int i;
+
+       if (!strcmp(elm_entry_entry_get(priv->name), "")) {
+               elm_object_focus_set(priv->name, EINA_TRUE);
+               return false;
+       }
+
+       if (!priv->locked) {
+               _update_user(priv, NULL);
+               return false;
+       }
+
+       for (i = 0; i < COUNT_PIN; i++) {
+               if (elm_entry_is_empty(priv->pin[i])) {
+                       elm_object_focus_set(priv->pin[i], EINA_TRUE);
+                       return false;
+               }
+       }
+
+       return true;
+}
+
+static void _select_done(struct _priv *priv)
+{
+       char pincode[8];
+
+       if (!_check_done(priv))
+               return;
+
+       snprintf(pincode, sizeof(pincode), "%s%s%s%s",
+                       elm_entry_entry_get(priv->pin[0]),
+                       elm_entry_entry_get(priv->pin[1]),
+                       elm_entry_entry_get(priv->pin[2]),
+                       elm_entry_entry_get(priv->pin[3]));
+
+       viewmgr_update_view(VIEW_PIN, UPDATE_TYPE_PIN_CODE, pincode);
+       viewmgr_show_view(VIEW_PIN);
+}
+
 static void _select(struct _priv *priv, int id, Evas_Object *obj)
 {
        switch (id) {
@@ -675,6 +716,9 @@ static void _select(struct _priv *priv, int id, Evas_Object *obj)
        case INPUT_HANDLER_TYPE_ENTRY:
                elm_object_focus_set(priv->done, EINA_TRUE);
                break;
+       case INPUT_HANDLER_TYPE_BTN_DONE:
+               _select_done(priv);
+               break;
        case INPUT_HANDLER_TYPE_BTN_CANCEL:
                if (_check_changed_input(priv)) {
                        _add_discard_popup(priv);
@@ -741,35 +785,10 @@ static void _show_action_menu(struct _priv *priv)
        viewmgr_show_view(VIEW_ACTION_MENU);
 }
 
-static bool _check_done(struct _priv *priv)
-{
-       int i;
-
-       if (!strcmp(elm_entry_entry_get(priv->name), "")) {
-               elm_object_focus_set(priv->name, EINA_TRUE);
-               return false;
-       }
-
-       if (!priv->locked) {
-               _update_user(priv, NULL);
-               return false;
-       }
-
-       for (i = 0; i < COUNT_PIN; i++) {
-               if (elm_entry_is_empty(priv->pin[i])) {
-                       elm_object_focus_set(priv->pin[i], EINA_TRUE);
-                       return false;
-               }
-       }
-
-       return true;
-}
-
 static void _key_up(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Up *ev)
 {
        struct _priv *priv;
-       char pincode[8];
 
        if (!data) {
                _ERR("Invalid argument");
@@ -789,16 +808,7 @@ static void _key_up(int id, void *data, Evas *e, Evas_Object *obj,
                }
                viewmgr_pop_view();
        } else if (!strcmp(ev->keyname, KEY_ENTER)) {
-               if (!_check_done(priv))
-                       return;
-
-               snprintf(pincode, sizeof(pincode), "%s%s%s%s",
-                               elm_entry_entry_get(priv->pin[0]),
-                               elm_entry_entry_get(priv->pin[1]),
-                               elm_entry_entry_get(priv->pin[2]),
-                               elm_entry_entry_get(priv->pin[3]));
-               viewmgr_update_view(VIEW_PIN, UPDATE_TYPE_PIN_CODE, pincode);
-               viewmgr_show_view(VIEW_PIN);
+               _select_done(priv);
        } else if (!strcmp(ev->keyname, KEY_MENU) ||
                        !strcmp(ev->keyname, KEY_CONTEXT_MENU)) {
                _show_action_menu(priv);
@@ -842,6 +852,7 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
                }
        } else if (!strcmp(ev->keyname, KEY_ENTER)) {
                _select(priv, id, obj);
+               ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
        } else if (!strcmp(ev->keyname, KEY_MENU) ||
                        !strcmp(ev->keyname, KEY_CONTEXT_MENU)) {
                switch (id) {
@@ -870,8 +881,8 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
        }
 }
 
-static void _mouse_up(int id, void *data, Evas *e, Evas_Object *obj,
-               Evas_Event_Mouse_Up *ev)
+static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj,
+               Evas_Event_Mouse_Down *ev)
 {
        struct _priv *priv;
 
@@ -882,6 +893,7 @@ static void _mouse_up(int id, void *data, Evas *e, Evas_Object *obj,
 
        priv = data;
        _select(priv, id, obj);
+       ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
 }
 
 static void _change_entry(Evas_Object *name, Eina_Bool disable, const char *text,