How to avoid handling the moving event with zooming gesture event for a same move

This code shows a method to avoid handling moving event redundantly with zooming gesture.
typedef enum Gesture_state {
  GESTURE_STATE_NONE,
  GESTURE_STATE_ZOOMING,
}Ges_state;

...
static void init_gl(Evas_Object *obj) {
  ...
  ad->ges_state = GESTURE_STATE_NONE;
}

...
static Evas_Event_Flags zoom_start_cb(void *data , void *event_info)
{
  ...
    ad->ges_state = GESTURE_STATE_ZOOMING;
    ...
}
...
static Evas_Event_Flags zoom_end_cb(void *data , void *event_info)
{
  ...
    ad->ges_state = GESTURE_STATE_NONE;
  return EVAS_EVENT_FLAG_NONE;
}

static Evas_Event_Flags zoom_abort_cb(void *data , void *event_info)
{
  ...
    ad->ges_state = GESTURE_STATE_NONE;
  return EVAS_EVENT_FLAG_NONE;
}

...
static void
mouse_move_cb(void *data, Evas *e , Evas_Object *obj , void *event_info)
{
  appdata_s *ad = data;
  if(GESTURE_STATE_NONE != ad->ges_state)
  {
      dlog_print(DLOG_ERROR, "sample:mouse_move_cb", "skipped this cb because gesture is detecting!");
      return;
  }
  ...
}

Responses

0 Replies