Add missing condition check code for exception handling 87/148687/3
authorInHong Han <inhong1.han@samsung.com>
Fri, 8 Sep 2017 01:48:03 +0000 (10:48 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Mon, 11 Sep 2017 04:38:07 +0000 (04:38 +0000)
In Floating keyboard, the movements are possible only when the mouse is clicked.
Thus added the condition check code to prevent exceptions.

Change-Id: I2af217f851ea368af2fa2fca48d276bcee0a29bf

src/e_mod_input_panel.c

index a944d11..243dc6c 100644 (file)
@@ -48,6 +48,7 @@ struct _E_Input_Panel_Surface
 struct _E_Input_Panel_Floating_Info
 {
    Eina_Bool moving_req;
+   Eina_Bool mouse_pressed;
    Eina_Bool init_portrait_position;
    Eina_Bool init_landscape_position;
    int before_canvas_x;
@@ -671,6 +672,7 @@ _e_ips_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED
    if (e_object_is_del(E_OBJECT(ec)) || !ec->vkbd.floating || !g_floating_info)
      return;
 
+   g_floating_info->mouse_pressed = EINA_FALSE;
    g_floating_info->moving_req = EINA_FALSE;
 }
 
@@ -684,6 +686,7 @@ _e_ips_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUS
    if (e_object_is_del(E_OBJECT(ec)) || !ec->vkbd.floating || !g_floating_info)
      return;
 
+   g_floating_info->mouse_pressed = EINA_TRUE;
    g_floating_info->before_canvas_x = ev->cur.canvas.x;
    g_floating_info->before_canvas_y = ev->cur.canvas.y;
 }
@@ -701,7 +704,7 @@ _e_ips_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *ev
    if (e_object_is_del(E_OBJECT(ec)) || !ec->vkbd.floating || !g_floating_info)
      return;
 
-   if (!g_floating_info->moving_req)
+   if (!g_floating_info->moving_req || !g_floating_info->mouse_pressed)
      return;
 
    evas_object_geometry_get(obj, &x, &y, &w, &h);