From: Junkyeong Kim Date: Fri, 14 Mar 2025 09:20:32 +0000 (+0900) Subject: gesture: Add efl_util_gesture_grab_mode_set X-Git-Tag: accepted/tizen/9.0/unified/20250317.161234~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=63346c12ccaba85d8d9a74812c69db36dad9b2a1;p=platform%2Fcore%2Fapi%2Fefl-util.git gesture: Add efl_util_gesture_grab_mode_set Support new shared_grab protocol. Change-Id: If7ef8eba2bc29192c232eb4bade0c8f85b8f7507 Signed-off-by: Junkyeong Kim --- diff --git a/include/efl_util.h b/include/efl_util.h index 1a96634..fbe25aa 100644 --- a/include/efl_util.h +++ b/include/efl_util.h @@ -652,6 +652,17 @@ typedef enum _efl_util_gesture_edge_size_e EFL_UTIL_GESTURE_EDGE_SIZE_PARTIAL /**< Part of edge */ } efl_util_gesture_edge_size_e; +/** + * @brief Enumeration of gesture edge size. + * @since_tizen 10.0 + */ +typedef enum _efl_util_gesture_grab_mode_e +{ + EFL_UTIL_GESTURE_GRAB_MODE_NONE = 0, /**< none mode */ + EFL_UTIL_GESTURE_GRAB_MODE_EXCLUSIVE, /**< exclusive mode */ + EFL_UTIL_GESTURE_GRAB_MODE_SHARED, /**< shared grab mode */ +} efl_util_gesture_grab_mode_e; + /** * @brief Definition for the gesture data handle. * @since_tizen 4.0 @@ -1059,6 +1070,18 @@ API int efl_util_gesture_tap_cb_set(efl_util_gesture_h gesture_h, efl_util_gestu * @retval #EFL_UTIL_ERROR_INVALID_PARAMETER Invalid parameter */ API int efl_util_gesture_palm_cover_cb_set(efl_util_gesture_h gesture_h, efl_util_gesture_palm_cover_cb cb_func, void *data); + +/** + * @brief Sets gesture grab mode. + * @since_tizen 10.0 + * @param[in] gesture_h The #efl_util_gesture_h handle + * @param[in] data The data to be passed to the callback function + * @param[in] mode The #efl_util_gesture_grab_mode_e mode + * @return @c 0 on success, otherwise a negative error value + * @retval #EFL_UTIL_ERROR_NONE Successful + * @retval #EFL_UTIL_ERROR_INVALID_PARAMETER Invalid parameter + */ +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); /** * @} */ diff --git a/src/efl_util.c b/src/efl_util.c index f6d2b89..693c060 100644 --- a/src/efl_util.c +++ b/src/efl_util.c @@ -84,6 +84,7 @@ typedef struct _Efl_Util_Wl_Output_Info 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 @@ -2783,7 +2784,7 @@ _efl_util_gesture_verify_request_notified() } 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; @@ -2811,9 +2812,14 @@ _efl_util_gesture_grab_edge_swipe(efl_util_gesture_data data, Eina_Bool grabbed) 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(); @@ -2821,7 +2827,7 @@ _efl_util_gesture_grab_edge_swipe(efl_util_gesture_data data, Eina_Bool grabbed) } 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; @@ -2849,9 +2855,14 @@ _efl_util_gesture_grab_edge_drag(efl_util_gesture_data data, Eina_Bool grabbed) 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(); @@ -2859,7 +2870,7 @@ _efl_util_gesture_grab_edge_drag(efl_util_gesture_data data, Eina_Bool grabbed) } 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; @@ -2881,9 +2892,14 @@ _efl_util_gesture_grab_tap(efl_util_gesture_data data, Eina_Bool grabbed) 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(); @@ -2891,7 +2907,7 @@ _efl_util_gesture_grab_tap(efl_util_gesture_data data, Eina_Bool grabbed) } 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; @@ -2905,9 +2921,14 @@ _efl_util_gesture_grab_palm_cover(efl_util_gesture_data data, Eina_Bool grabbed) 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(); @@ -3257,20 +3278,20 @@ efl_util_gesture_grab(efl_util_gesture_h gesture_h, efl_util_gesture_data data) 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; @@ -3291,20 +3312,20 @@ efl_util_gesture_ungrab(efl_util_gesture_h gesture_h, efl_util_gesture_data data 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; @@ -3478,3 +3499,25 @@ API int efl_util_gesture_palm_cover_cb_set(efl_util_gesture_h gesture_h, efl_uti return ret; } + +/* LCOV_EXCL_START */ +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; +} +/* LCOV_EXCL_STOP */