EINA_SAFETY_ON_NULL_RETURN(gconfig->conf);
conf = gconfig->conf;
+
if (!conf->key_device_name) conf->key_device_name = strdup(E_GESTURE_KEYBOARD_DEVICE);
if (conf->edge_swipe.time_done <= 0.0) conf->edge_swipe.time_done = E_GESTURE_EDGE_SWIPE_DONE_TIME;
if (conf->edge_swipe.time_begin <= 0.0) conf->edge_swipe.time_begin = E_GESTURE_EDGE_SWIPE_START_TIME;
if (conf->edge_swipe.max_length <= 0) conf->edge_swipe.max_length = E_GESTURE_EDGE_SWIPE_DIFF_SUCCESS;
if (conf->edge_swipe.compose_key <= 0) conf->edge_swipe.compose_key = E_GESTURE_EDGE_SWIPE_COMBINE_KEY;
if (conf->edge_swipe.back_key <= 0) conf->edge_swipe.back_key = E_GESTURE_EDGE_SWIPE_BACK_KEY;
+
+ if (conf->tap.repeats_max <= 0) conf->tap.repeats_max = E_GESTURE_TAP_REPEATS_MAX;
+ if (conf->tap.time_start <= 0.0) conf->tap.time_start = E_GESTURE_TAP_START_TIME;
+ if (conf->tap.time_done <= 0.0) conf->tap.time_done = E_GESTURE_TAP_DONE_TIME;
+ if (conf->tap.time_interval <= 0.0) conf->tap.time_interval = E_GESTURE_TAP_INTERVAL_TIME;
+ if (conf->tap.moving_range <= 0) conf->tap.moving_range = E_GESTURE_TAP_MOVING_RANGE;
+
+ if (conf->pan.time_start <= 0.0) conf->pan.time_start = E_GESTURE_PAN_START_TIME;
+ if (conf->pan.moving_range <= 0) conf->pan.moving_range = E_GESTURE_PAN_MOVING_RANGE;
+
+ if (conf->pinch.moving_distance_range <= 0.0) conf->pinch.moving_distance_range = E_GESTURE_PINCH_MOVING_DISTANCE_RANGE;
}
void
#define T E_Gesture_Conf_Edd
#define D gconfig->conf_edd
E_CONFIG_VAL(D, T, key_device_name, STR);
+ E_CONFIG_VAL(D, T, event_keep, CHAR);
+
E_CONFIG_VAL(D, T, edge_swipe.time_done, DOUBLE);
E_CONFIG_VAL(D, T, edge_swipe.time_begin, DOUBLE);
E_CONFIG_VAL(D, T, edge_swipe.area_offset, INT);
E_CONFIG_VAL(D, T, edge_swipe.compose_key, INT);
E_CONFIG_VAL(D, T, edge_swipe.back_key, INT);
E_CONFIG_VAL(D, T, edge_swipe.default_enable_back, CHAR);
- E_CONFIG_VAL(D, T, edge_swipe.event_keep, CHAR);
+
+ E_CONFIG_VAL(D, T, tap.repeats_max, INT);
+ E_CONFIG_VAL(D, T, tap.time_start, DOUBLE);
+ E_CONFIG_VAL(D, T, tap.time_done, DOUBLE);
+ E_CONFIG_VAL(D, T, tap.time_interval, DOUBLE);
+ E_CONFIG_VAL(D, T, tap.moving_range, INT);
+
+ E_CONFIG_VAL(D, T, pan.time_start, DOUBLE);
+ E_CONFIG_VAL(D, T, pan.moving_range, INT);
+
+ E_CONFIG_VAL(D, T, pinch.moving_distance_range, DOUBLE);
#undef T
#undef D
enum tizen_gesture_edge dir = 0;
Ecore_Event_Mouse_Button *ev_cancel;
E_Gesture_Conf_Edd *conf = gesture->config->conf;
- E_Gesture_Event_Edge_Swipe *edge_swipes = &gesture->gesture_events.edge_swipes;
switch (edge)
{
break;
}
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
{
_e_gesture_event_drop();
}
(edge_swipes->edge == E_GESTURE_EDGE_BOTTOM && !edge_swipes->fingers[idx].edge[E_GESTURE_EDGE_BOTTOM].client) ||
(edge_swipes->edge == E_GESTURE_EDGE_RIGHT && !edge_swipes->fingers[idx].edge[E_GESTURE_EDGE_RIGHT].client))
{
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
_e_gesture_event_flush();
_e_gesture_edge_swipe_cancel();
}
GTDBG("Edge_Swipe done timer is expired. Currently alived edge_swipe fingers: 0x%x\n", edge_swipes->enabled_finger);
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
_e_gesture_event_flush();
_e_gesture_edge_swipe_cancel();
}
else
{
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
_e_gesture_event_flush();
_e_gesture_edge_swipe_cancel();
}
edge_swipes->enabled_finger &= ~(1 << (gesture->gesture_events.num_pressed - 1));
if (edge_swipes->start_timer == NULL)
{
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
_e_gesture_event_flush();
_e_gesture_edge_swipe_cancel();
}
case E_GESTURE_EDGE_TOP:
if (diff.x > conf->edge_swipe.min_length)
{
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
_e_gesture_event_flush();
_e_gesture_edge_swipe_cancel();
break;
case E_GESTURE_EDGE_LEFT:
if (diff.y > conf->edge_swipe.min_length)
{
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
_e_gesture_event_flush();
_e_gesture_edge_swipe_cancel();
break;
case E_GESTURE_EDGE_BOTTOM:
if (diff.x > conf->edge_swipe.min_length)
{
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
_e_gesture_event_flush();
_e_gesture_edge_swipe_cancel();
break;
case E_GESTURE_EDGE_RIGHT:
if (diff.y > conf->edge_swipe.min_length)
{
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
_e_gesture_event_flush();
_e_gesture_edge_swipe_cancel();
break;
static void
_e_gesture_process_edge_swipe_up(Ecore_Event_Mouse_Button *ev)
{
- E_Gesture_Event_Edge_Swipe *edge_swipes = &gesture->gesture_events.edge_swipes;
-
- if (edge_swipes->event_keep)
+ if (gesture->gesture_events.event_keep)
_e_gesture_event_flush();
_e_gesture_edge_swipe_cancel();
}
e_gesture_util_tap_max_repeats_get(unsigned int fingers)
{
E_Gesture_Event_Tap *taps = &gesture->gesture_events.taps;
+ E_Gesture_Conf_Edd *conf = gesture->config->conf;
int i;
unsigned int max = 0;
- for (i = 0; i < E_GESTURE_TAP_REPEATS_MAX + 1; i++)
+ for (i = 0; i < conf->tap.repeats_max + 1; i++)
{
if (taps->fingers[fingers].repeats[i].client) max = i;
}
_e_gesture_tap_start(void)
{
E_Gesture_Event_Tap *taps = &gesture->gesture_events.taps;
+ E_Gesture_Conf_Edd *conf = gesture->config->conf;
taps->state = E_GESTURE_TAP_STATE_START;
if (!taps->start_timer)
{
- taps->start_timer = ecore_timer_add(E_GESTURE_TAP_START_TIME, _e_gesture_timer_tap_start, NULL);
+ taps->start_timer = ecore_timer_add(conf->tap.time_start, _e_gesture_timer_tap_start, NULL);
}
if (!taps->done_timer)
{
- taps->done_timer = ecore_timer_add(E_GESTURE_TAP_DONE_TIME, _e_gesture_timer_tap_done, NULL);
+ taps->done_timer = ecore_timer_add(conf->tap.time_done, _e_gesture_timer_tap_done, NULL);
}
}
_e_gesture_tap_done(void)
{
E_Gesture_Event_Tap *taps = &gesture->gesture_events.taps;
+ E_Gesture_Conf_Edd *conf = gesture->config->conf;
- if (taps->repeats >= E_GESTURE_TAP_REPEATS_MAX)
+ if (taps->repeats >= conf->tap.repeats_max)
_e_gesture_tap_cancel();
if (!taps->fingers[taps->enabled_finger].enabled)
{
if (!taps->interval_timer)
{
- taps->interval_timer = ecore_timer_add(E_GESTURE_TAP_INTERVAL_TIME, _e_gesture_timer_tap_interval, NULL);
+ taps->interval_timer = ecore_timer_add(conf->tap.time_interval, _e_gesture_timer_tap_interval, NULL);
}
}
}
_e_gesture_process_tap_move(Ecore_Event_Mouse_Move *ev)
{
E_Gesture_Event_Tap *taps = &gesture->gesture_events.taps;
+ E_Gesture_Conf_Edd *conf = gesture->config->conf;
Rect current_rect = {0, };
int xx1, yy1, xx2, yy2;
xx2 = taps->base_rect.x2 - current_rect.x2;
yy2 = taps->base_rect.y2 - current_rect.y2;
- if (ABS(xx1) > E_GESTURE_TAP_MOVING_RANGE ||
- ABS(yy1) > E_GESTURE_TAP_MOVING_RANGE ||
- ABS(xx2) > E_GESTURE_TAP_MOVING_RANGE ||
- ABS(yy2) > E_GESTURE_TAP_MOVING_RANGE)
+ if (ABS(xx1) > conf->tap.moving_range ||
+ ABS(yy1) > conf->tap.moving_range ||
+ ABS(xx2) > conf->tap.moving_range ||
+ ABS(yy2) > conf->tap.moving_range)
{
GTDBG("%d finger moving too large diff: (%d, %d)(%d, %d)\n", ev->multi.device, xx1, yy1, xx2, yy2);
_e_gesture_tap_cancel();
{
if (gesture->grabbed_gesture & TIZEN_GESTURE_TYPE_TAP ||
((gesture->grabbed_gesture & TIZEN_GESTURE_TYPE_EDGE_SWIPE) &&
- gesture->gesture_events.edge_swipes.event_keep))
+ gesture->gesture_events.event_keep))
gesture->event_state = E_GESTURE_EVENT_STATE_KEEP;
gesture->gesture_filter = E_GESTURE_TYPE_ALL & ~gesture->grabbed_gesture;
}
gev->edge_swipes.fingers[i].enabled = EINA_FALSE;
}
gesture->grabbed_gesture &= ~TIZEN_GESTURE_TYPE_EDGE_SWIPE;
- if (gev->edge_swipes.event_keep) gesture->event_state = E_GESTURE_EVENT_STATE_PROPAGATE;
+ if (gev->event_keep) gesture->event_state = E_GESTURE_EVENT_STATE_PROPAGATE;
}
static void
e_gesture_add_client_destroy_listener(client, TIZEN_GESTURE_TYPE_EDGE_SWIPE, fingers, edge & ~grabbed_edge, 0);
gesture->grabbed_gesture |= TIZEN_GESTURE_TYPE_EDGE_SWIPE;
gev->edge_swipes.fingers[fingers].enabled = EINA_TRUE;
- if (gev->edge_swipes.event_keep) gesture->event_state = E_GESTURE_EVENT_STATE_KEEP;
+ if (gev->event_keep) gesture->event_state = E_GESTURE_EVENT_STATE_KEEP;
gev->edge_swipes.enabled_edge |= grabbed_edge;
if (!grabbed_edge)
_e_gesture_init(E_Module *m)
{
E_Gesture_Config_Data *gconfig = NULL;
- gesture = E_NEW(E_Gesture, 1);
+ gesture = E_NEW(E_Gesture, 1);
if (!gesture)
{
GTERR("Failed to allocate memory for gesture !\n");
EINA_SAFETY_ON_NULL_GOTO(gconfig->conf, err);
gesture->config = gconfig;
- GTDBG("config value\n");
- GTDBG("keyboard: %s, time_done: %lf, time_begin: %lf\n", gconfig->conf->key_device_name, gconfig->conf->edge_swipe.time_done, gconfig->conf->edge_swipe.time_begin);
- GTDBG("area_offset: %d, min_length: %d, max_length: %d\n", gconfig->conf->edge_swipe.area_offset, gconfig->conf->edge_swipe.min_length, gconfig->conf->edge_swipe.max_length);
- GTDBG("compose key: %d, back: %d, default: %d\n", gconfig->conf->edge_swipe.compose_key, gconfig->conf->edge_swipe.back_key, gconfig->conf->edge_swipe.default_enable_back);
+ GTDBG("gesture config value\n");
+ GTDBG("key_device_name: %s, event_keep: %d\n", gconfig->conf->key_device_name, gconfig->conf->event_keep);
+ GTDBG("edge_swipe\n");
+ GTDBG("\ttime_done: %lf, time_begin: %lf, area_offset: %d\n", gconfig->conf->edge_swipe.time_done,
+ gconfig->conf->edge_swipe.time_begin,
+ gconfig->conf->edge_swipe.area_offset);
+ GTDBG("\tmin_length: %d, max_length: %d, compose_key: %d, back_key: %d\n", gconfig->conf->edge_swipe.min_length,
+ gconfig->conf->edge_swipe.max_length,
+ gconfig->conf->edge_swipe.compose_key,
+ gconfig->conf->edge_swipe.back_key);
+ GTDBG("tap\n");
+ GTDBG("\trepeats_max: %d, moving_range: %d\n", gconfig->conf->tap.repeats_max,
+ gconfig->conf->tap.moving_range);
+ GTDBG("\ttime_start: %lf, time_done: %lf, time_interval: %lf\n", gconfig->conf->tap.time_start,
+ gconfig->conf->tap.time_done,
+ gconfig->conf->tap.time_interval);
+ GTDBG("pan time_start: %lf, moving_range: %d\n", gconfig->conf->pan.time_start, gconfig->conf->pan.moving_range);
+ GTDBG("pinch moving_distance_range: %lf\n", gconfig->conf->pinch.moving_distance_range);
gesture->global = wl_global_create(e_comp_wl->wl.disp, &tizen_gesture_interface, 2, gesture, _e_gesture_cb_bind);
if (!gesture->global)
gesture->gesture_filter = E_GESTURE_TYPE_MAX;
- gesture->gesture_events.edge_swipes.event_keep = gconfig->conf->edge_swipe.event_keep;
+ gesture->gesture_events.event_keep = gconfig->conf->event_keep;
if (gconfig->conf->edge_swipe.default_enable_back)
{
gesture->grabbed_gesture |= TIZEN_GESTURE_TYPE_EDGE_SWIPE;
gesture->gesture_events.edge_swipes.fingers[1].edge[E_GESTURE_EDGE_TOP].client = (void *)0x1;
gesture->gesture_events.edge_swipes.fingers[1].edge[E_GESTURE_EDGE_TOP].res = (void *)0x1;
gesture->gesture_events.edge_swipes.enabled_edge |= TIZEN_GESTURE_EDGE_TOP;
- if (gesture->gesture_events.edge_swipes.event_keep)
+ if (gesture->gesture_events.event_keep)
{
gesture->event_state = E_GESTURE_EVENT_STATE_KEEP;
}
#define E_GESTURE_TAP_REPEATS_MAX 3
#define E_GESTURE_TAP_START_TIME 0.05
-#define E_GESTURE_TAP_DONE_TIME 1
-#define E_GESTURE_TAP_INTERVAL_TIME 1
+#define E_GESTURE_TAP_DONE_TIME 1.0
+#define E_GESTURE_TAP_INTERVAL_TIME 1.0
#define E_GESTURE_TAP_MOVING_RANGE 25
#define E_GESTURE_PAN_START_TIME 0.05
struct _E_Gesture_Conf_Edd
{
char *key_device_name;
+ Eina_Bool event_keep;
struct
{
double time_done;
int compose_key;
int back_key;
Eina_Bool default_enable_back;
- Eina_Bool event_keep;
} edge_swipe;
+ struct
+ {
+ int repeats_max;
+ double time_start;
+ double time_done;
+ double time_interval;
+ int moving_range;
+ } tap;
+ struct
+ {
+ double time_start;
+ int moving_range;
+ } pan;
+ struct
+ {
+ double moving_distance_range;
+ } pinch;
};
struct _E_Gesture_Config_Data
Ecore_Timer *start_timer;
Ecore_Timer *done_timer;
-
- Eina_Bool event_keep;
};
struct _E_Gesture_Event_Tap_Finger_Repeats
int num_pressed;
Eina_Bool recognized_gesture;
+ Eina_Bool event_keep;
};
struct _E_Gesture