typedef struct _Efl_Util_Gesture_Common_Grab_Data
{
int type;
+ efl_util_gesture_grab_mode_e mode;
} Efl_Util_Gesture_Common_Grab_Data;
typedef struct _Efl_Util_Gesture_Edge_Swipe_Grab_Data
{
switch (ret)
{
- case TIZEN_GESTURE_ERROR_NONE:
- return EFL_UTIL_ERROR_NONE;
- case TIZEN_GESTURE_ERROR_INVALID_DATA:
- return EFL_UTIL_ERROR_INVALID_PARAMETER;
- case TIZEN_GESTURE_ERROR_NO_PERMISSION:
- return EFL_UTIL_ERROR_PERMISSION_DENIED;
- case TIZEN_GESTURE_ERROR_NO_SYSTEM_RESOURCES:
- return EFL_UTIL_ERROR_OUT_OF_MEMORY;
- case TIZEN_GESTURE_ERROR_GRABBED_ALREADY:
- return EFL_UTIL_ERROR_NO_RESOURCE_AVAILABLE;
- case TIZEN_GESTURE_ERROR_NOT_SUPPORTED:
- return EFL_UTIL_ERROR_NOT_SUPPORTED;
- default :
- return EFL_UTIL_ERROR_NONE;
+ case TIZEN_GESTURE_ERROR_NONE:
+ return EFL_UTIL_ERROR_NONE;
+ case TIZEN_GESTURE_ERROR_INVALID_DATA:
+ return EFL_UTIL_ERROR_INVALID_PARAMETER;
+ case TIZEN_GESTURE_ERROR_NO_PERMISSION:
+ return EFL_UTIL_ERROR_PERMISSION_DENIED;
+ case TIZEN_GESTURE_ERROR_NO_SYSTEM_RESOURCES:
+ return EFL_UTIL_ERROR_OUT_OF_MEMORY;
+ case TIZEN_GESTURE_ERROR_GRABBED_ALREADY:
+ return EFL_UTIL_ERROR_NO_RESOURCE_AVAILABLE;
+ case TIZEN_GESTURE_ERROR_NOT_SUPPORTED:
+ return EFL_UTIL_ERROR_NOT_SUPPORTED;
+ default :
+ return EFL_UTIL_ERROR_NONE;
}
}
}
static int
-_efl_util_gesture_grab_edge_swipe(efl_util_gesture_data data, Eina_Bool grabbed)
+_efl_util_gesture_grab_edge_swipe(efl_util_gesture_data data, Eina_Bool grabbed, efl_util_gesture_grab_mode_e mode)
{
LOGD("");
int ret = EFL_UTIL_ERROR_NONE;
end_point = edge_swipe_data->end_point;
if (grabbed)
- tizen_gesture_grab_edge_swipe(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
+ {
+ if (mode == EFL_UTIL_GESTURE_GRAB_MODE_SHARED)
+ tizen_gesture_shared_grab_edge_swipe(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
+ else
+ tizen_gesture_grab_edge_swipe(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
+ }
else
- tizen_gesture_ungrab_edge_swipe(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
+ tizen_gesture_ungrab_edge_swipe(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
ret = _efl_util_gesture_verify_request_notified();
}
static int
-_efl_util_gesture_grab_edge_drag(efl_util_gesture_data data, Eina_Bool grabbed)
+_efl_util_gesture_grab_edge_drag(efl_util_gesture_data data, Eina_Bool grabbed, efl_util_gesture_grab_mode_e mode)
{
LOGD("");
int ret = EFL_UTIL_ERROR_NONE;
end_point = edge_drag_data->end_point;
if (grabbed)
- tizen_gesture_grab_edge_drag(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
+ {
+ if (mode == EFL_UTIL_GESTURE_GRAB_MODE_SHARED)
+ tizen_gesture_shared_grab_edge_drag(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
+ else
+ tizen_gesture_grab_edge_drag(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
+ }
else
- tizen_gesture_ungrab_edge_drag(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
+ tizen_gesture_ungrab_edge_drag(_eflutil_defaultqueue.wl.gesture.proto, fingers, edge, edge_size, start_point, end_point);
ret = _efl_util_gesture_verify_request_notified();
}
static int
-_efl_util_gesture_grab_tap(efl_util_gesture_data data, Eina_Bool grabbed)
+_efl_util_gesture_grab_tap(efl_util_gesture_data data, Eina_Bool grabbed, efl_util_gesture_grab_mode_e mode)
{
LOGD("");
int ret = EFL_UTIL_ERROR_NONE;
repeats = tap_data->repeats;
if (grabbed)
- tizen_gesture_grab_tap(_eflutil_defaultqueue.wl.gesture.proto, fingers, repeats);
+ {
+ if (mode == EFL_UTIL_GESTURE_GRAB_MODE_SHARED)
+ tizen_gesture_shared_grab_tap(_eflutil_defaultqueue.wl.gesture.proto, fingers, repeats);
+ else
+ tizen_gesture_grab_tap(_eflutil_defaultqueue.wl.gesture.proto, fingers, repeats);
+ }
else
- tizen_gesture_ungrab_tap(_eflutil_defaultqueue.wl.gesture.proto, fingers, repeats);
+ tizen_gesture_ungrab_tap(_eflutil_defaultqueue.wl.gesture.proto, fingers, repeats);
ret = _efl_util_gesture_verify_request_notified();
}
static int
-_efl_util_gesture_grab_palm_cover(efl_util_gesture_data data, Eina_Bool grabbed)
+_efl_util_gesture_grab_palm_cover(efl_util_gesture_data data, Eina_Bool grabbed, efl_util_gesture_grab_mode_e mode)
{
LOGD("");
int ret = EFL_UTIL_ERROR_NONE;
EFL_UTIL_ERROR_INVALID_PARAMETER);
if (grabbed)
- tizen_gesture_grab_palm_cover(_eflutil_defaultqueue.wl.gesture.proto);
+ {
+ if (mode == EFL_UTIL_GESTURE_GRAB_MODE_SHARED)
+ tizen_gesture_shared_grab_palm_cover(_eflutil_defaultqueue.wl.gesture.proto);
+ else
+ tizen_gesture_grab_palm_cover(_eflutil_defaultqueue.wl.gesture.proto);
+ }
else
- tizen_gesture_ungrab_palm_cover(_eflutil_defaultqueue.wl.gesture.proto);
+ tizen_gesture_ungrab_palm_cover(_eflutil_defaultqueue.wl.gesture.proto);
ret = _efl_util_gesture_verify_request_notified();
switch (base_data->type)
{
- case TIZEN_GESTURE_TYPE_EDGE_SWIPE:
- ret = _efl_util_gesture_grab_edge_swipe(data, EINA_TRUE);
- break;
- case TIZEN_GESTURE_TYPE_EDGE_DRAG:
- ret = _efl_util_gesture_grab_edge_drag(data, EINA_TRUE);
- break;
- case TIZEN_GESTURE_TYPE_TAP:
- ret = _efl_util_gesture_grab_tap(data, EINA_TRUE);
- break;
- case TIZEN_GESTURE_TYPE_PALM_COVER:
- ret = _efl_util_gesture_grab_palm_cover(data, EINA_TRUE);
- break;
- default:
- return EFL_UTIL_ERROR_INVALID_PARAMETER;
+ case TIZEN_GESTURE_TYPE_EDGE_SWIPE:
+ ret = _efl_util_gesture_grab_edge_swipe(data, EINA_TRUE, base_data->mode);
+ break;
+ case TIZEN_GESTURE_TYPE_EDGE_DRAG:
+ ret = _efl_util_gesture_grab_edge_drag(data, EINA_TRUE, base_data->mode);
+ break;
+ case TIZEN_GESTURE_TYPE_TAP:
+ ret = _efl_util_gesture_grab_tap(data, EINA_TRUE, base_data->mode);
+ break;
+ case TIZEN_GESTURE_TYPE_PALM_COVER:
+ ret = _efl_util_gesture_grab_palm_cover(data, EINA_TRUE, base_data->mode);
+ break;
+ default:
+ ret = EFL_UTIL_ERROR_INVALID_PARAMETER;
}
return ret;
switch (base_data->type)
{
- case TIZEN_GESTURE_TYPE_EDGE_SWIPE:
- ret = _efl_util_gesture_grab_edge_swipe(data, EINA_FALSE);
- break;
- case TIZEN_GESTURE_TYPE_EDGE_DRAG:
- ret = _efl_util_gesture_grab_edge_drag(data, EINA_FALSE);
- break;
- case TIZEN_GESTURE_TYPE_TAP:
- ret = _efl_util_gesture_grab_tap(data, EINA_FALSE);
- break;
- case TIZEN_GESTURE_TYPE_PALM_COVER:
- ret = _efl_util_gesture_grab_palm_cover(data, EINA_FALSE);
- break;
- default:
- return EFL_UTIL_ERROR_INVALID_PARAMETER;
+ case TIZEN_GESTURE_TYPE_EDGE_SWIPE:
+ ret = _efl_util_gesture_grab_edge_swipe(data, EINA_FALSE, base_data->mode);
+ break;
+ case TIZEN_GESTURE_TYPE_EDGE_DRAG:
+ ret = _efl_util_gesture_grab_edge_drag(data, EINA_FALSE, base_data->mode);
+ break;
+ case TIZEN_GESTURE_TYPE_TAP:
+ ret = _efl_util_gesture_grab_tap(data, EINA_FALSE, base_data->mode);
+ break;
+ case TIZEN_GESTURE_TYPE_PALM_COVER:
+ ret = _efl_util_gesture_grab_palm_cover(data, EINA_FALSE, base_data->mode);
+ break;
+ default:
+ ret = EFL_UTIL_ERROR_INVALID_PARAMETER;
}
return ret;
return ret;
}
+
+API int
+efl_util_gesture_grab_mode_set(efl_util_gesture_h gesture_h, efl_util_gesture_data data, efl_util_gesture_grab_mode_e mode)
+{
+ LOGD("");
+ Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
+
+ base_data = (Efl_Util_Gesture_Common_Grab_Data *)data;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(gesture_h, EFL_UTIL_ERROR_INVALID_PARAMETER);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(gesture_h->init, EFL_UTIL_ERROR_INVALID_PARAMETER);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(base_data, EFL_UTIL_ERROR_INVALID_PARAMETER);
+ if (mode > EFL_UTIL_GESTURE_GRAB_MODE_SHARED) return EFL_UTIL_ERROR_INVALID_PARAMETER;
+ if (mode <= EFL_UTIL_GESTURE_GRAB_MODE_NONE || mode > EFL_UTIL_GESTURE_GRAB_MODE_SHARED)
+ return EFL_UTIL_ERROR_INVALID_PARAMETER;
+
+ base_data->mode = mode;
+
+ return EFL_UTIL_ERROR_NONE;
+}
ret = efl_util_gesture_deinitialize(h_gesture);
EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
}
+
+TEST_F(EFLUtil, gesture_shared_grab_p)
+{
+ int ret = EFL_UTIL_ERROR_NONE;
+ efl_util_gesture_h h_gesture = NULL;
+ efl_util_gesture_data d_edge_swipe = NULL;
+
+ h_gesture = efl_util_gesture_initialize();
+ ret = get_last_result();
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+ EXPECT_NE(h_gesture, nullptr);
+
+ d_edge_swipe = efl_util_gesture_edge_swipe_new(h_gesture, 1, EFL_UTIL_GESTURE_EDGE_TOP);
+ ret = get_last_result();
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+ EXPECT_NE(d_edge_swipe, nullptr);
+
+ ret = efl_util_gesture_grab_mode_set(h_gesture, d_edge_swipe, EFL_UTIL_GESTURE_GRAB_MODE_SHARED);
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+
+ ret = efl_util_gesture_grab(h_gesture, d_edge_swipe);
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+
+ ret = efl_util_gesture_ungrab(h_gesture, d_edge_swipe);
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+
+ ret = efl_util_gesture_edge_swipe_free(h_gesture, d_edge_swipe);
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+
+ ret = efl_util_gesture_deinitialize(h_gesture);
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+}
+
+TEST_F(EFLUtil, gesture_shared_grab_n)
+{
+ int ret = EFL_UTIL_ERROR_NONE;
+ efl_util_gesture_h h_gesture = NULL;
+ efl_util_gesture_data d_edge_swipe = NULL;
+
+ h_gesture = efl_util_gesture_initialize();
+ ret = get_last_result();
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+ EXPECT_NE(h_gesture, nullptr);
+
+ d_edge_swipe = efl_util_gesture_edge_swipe_new(h_gesture, 1, EFL_UTIL_GESTURE_EDGE_TOP);
+ ret = get_last_result();
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+ EXPECT_NE(d_edge_swipe, nullptr);
+
+ ret = efl_util_gesture_grab_mode_set(h_gesture, d_edge_swipe, EFL_UTIL_GESTURE_GRAB_MODE_NONE);
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_INVALID_PARAMETER);
+
+ ret = efl_util_gesture_edge_swipe_free(h_gesture, d_edge_swipe);
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+
+ ret = efl_util_gesture_deinitialize(h_gesture);
+ EXPECT_EQ(ret, EFL_UTIL_ERROR_NONE);
+}