int x, int y, int *no_rep)
{
Evas_Object *obj;
+ int inside;
+
if (!list) return in;
EINA_INLIST_REVERSE_FOREACH(list, obj)
{
if (obj->smart.smart)
{
int norep = 0;
- int inside;
- if (((obj->cur.usemap) && (obj->cur.map) && (obj->cur.map->count == 4)))
+ if ((obj->cur.usemap) && (obj->cur.map) &&
+ (obj->cur.map->count == 4))
{
inside = evas_object_is_in_output_rect(obj, x, y, 1, 1);
if (inside)
evas_object_smart_members_get_direct(obj),
stop,
obj->cur.geometry.x + obj->cur.map->mx,
- obj->cur.geometry.y + obj->cur.map->my, &norep);
+ obj->cur.geometry.y + obj->cur.map->my,
+ &norep);
}
}
}
}
else
{
- int inside = evas_object_is_in_output_rect(obj, x, y, 1, 1);
+ inside = evas_object_is_in_output_rect(obj, x, y, 1, 1);
- if (((obj->cur.usemap) && (obj->cur.map) && (obj->cur.map->count == 4)))
+ if ((obj->cur.usemap) && (obj->cur.map) &&
+ (obj->cur.map->count == 4))
{
- if ((inside) && (!evas_map_coords_get(obj->cur.map, x, y,
- &(obj->cur.map->mx),
- &(obj->cur.map->my), 0)))
+ if ((inside) &&
+ (!evas_map_coords_get(obj->cur.map, x, y,
+ &(obj->cur.map->mx),
+ &(obj->cur.map->my), 0)))
{
inside = 0;
}
Eina_List *l, *copy;
Evas_Event_Mouse_Down ev;
Evas_Object *obj;
+ int addgrab = 0;
int event_id = 0;
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
if ((b < 1) || (b > 32)) return;
e->pointer.button |= (1 << (b - 1));
+ e->pointer.downs++;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
e->pointer.object.in = eina_list_free(e->pointer.object.in);
/* and set up the new one */
e->pointer.object.in = ins;
+ /* adjust grabbed count by the nuymber of currently held down
+ * fingers/buttons */
+ if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1;
}
copy = evas_event_list_copy(e->pointer.object.in);
EINA_LIST_FOREACH(copy, l, obj)
{
if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB)
{
- obj->mouse_grabbed++;
- e->pointer.mouse_grabbed++;
+ obj->mouse_grabbed += addgrab + 1;
+ e->pointer.mouse_grabbed += addgrab + 1;
}
}
EINA_LIST_FOREACH(copy, l, obj)
if ((b < 1) || (b > 32)) return;
e->pointer.button &= ~(1 << (b - 1));
+ e->pointer.downs--;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
}
/* remove released touch point from the touch point list */
_evas_touch_point_remove(e, 0);
-
+
_evas_unwalk(e);
}
_evas_walk(e);
/* if our mouse button is grabbed to any objects */
- if (e->pointer.mouse_grabbed == 0)
+ if ((0) && (e->pointer.mouse_grabbed != 0))
{
/* go thru old list of in objects */
Eina_List *l, *copy;
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
}
+ obj->mouse_grabbed = 0;
}
if (e->delete_me) break;
}
if (copy) copy = eina_list_free(copy);
/* free our old list of ins */
e->pointer.object.in = eina_list_free(e->pointer.object.in);
+ e->pointer.mouse_grabbed = 0;
_evas_post_event_callback_call(e);
}
_evas_unwalk(e);
Eina_List *l, *copy;
Evas_Event_Multi_Down ev;
Evas_Object *obj;
+ int addgrab = 0;
int event_id = 0;
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ e->pointer.downs++;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
_evas_walk(e);
/* append new touch point to the touch point list */
_evas_touch_point_append(e, d, x, y);
+ if (e->pointer.mouse_grabbed == 0)
+ {
+ if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1;
+ }
copy = evas_event_list_copy(e->pointer.object.in);
EINA_LIST_FOREACH(copy, l, obj)
{
if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB)
{
- obj->mouse_grabbed++;
- e->pointer.mouse_grabbed++;
+ obj->mouse_grabbed += addgrab + 1;
+ e->pointer.mouse_grabbed += addgrab + 1;
}
}
EINA_LIST_FOREACH(copy, l, obj)
return;
MAGIC_CHECK_END();
+ e->pointer.downs--;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
- if (!e->pointer.inside) return;
+ if ((!e->pointer.inside) && (e->pointer.mouse_grabbed == 0)) return;
_evas_walk(e);
/* update moved touch point */
break;
}
}
+
+EAPI int
+evas_event_down_count_get(const Evas *e)
+{
+ MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ return 0;
+ MAGIC_CHECK_END();
+ return e->pointer.downs;
+}