one way or the other i'm forced to add timestamps to events - i cant avoid it

anymore. sorry guys. really no way around it. :(


SVN revision: 15891
This commit is contained in:
Carsten Haitzler 2005-07-25 09:55:47 +00:00
parent b474b11ac2
commit a1a07c06c3
17 changed files with 162 additions and 90 deletions

View File

@ -12,11 +12,11 @@ static int _ecore_evas_fps_debug = 0;
static Ecore_Evas *ecore_evases = NULL;
static void
_ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y)
_ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
{
ee->mouse.x = x;
ee->mouse.y = y;
evas_event_feed_mouse_move(ee->evas, x, y, NULL);
evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
}
static int
@ -162,18 +162,22 @@ static void
_ecore_evas_buffer_cb_mouse_in(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Ecore_Evas *ee;
Evas_Event_Mouse_In *ev;
ee = data;
evas_event_feed_mouse_in(ee->evas, NULL);
ev = event_info;
evas_event_feed_mouse_in(ee->evas, ev->timestamp, NULL);
}
static void
_ecore_evas_buffer_cb_mouse_out(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Ecore_Evas *ee;
Evas_Event_Mouse_Out *ev;
ee = data;
evas_event_feed_mouse_out(ee->evas, NULL);
ev = event_info;
evas_event_feed_mouse_out(ee->evas, ev->timestamp, NULL);
}
static void
@ -184,7 +188,7 @@ _ecore_evas_buffer_cb_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *ob
ee = data;
ev = event_info;
evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, NULL);
evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
}
static void
@ -195,7 +199,7 @@ _ecore_evas_buffer_cb_mouse_up(void *data, Evas *e __UNUSED__, Evas_Object *obj
ee = data;
ev = event_info;
evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, NULL);
evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
}
static void
@ -210,7 +214,7 @@ _ecore_evas_buffer_cb_mouse_move(void *data, Evas *e __UNUSED__, Evas_Object *ob
x = ev->cur.canvas.x;
y = ev->cur.canvas.y;
_ecore_evas_buffer_coord_translate(ee, &x, &y);
_ecore_evas_mouse_move_process(ee, x, y);
_ecore_evas_mouse_move_process(ee, x, y, ev->timestamp);
}
static void
@ -221,7 +225,7 @@ _ecore_evas_buffer_cb_mouse_wheel(void *data, Evas *e __UNUSED__, Evas_Object *o
ee = data;
ev = event_info;
evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, NULL);
evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, ev->timestamp, NULL);
}
static void
@ -278,7 +282,7 @@ _ecore_evas_buffer_cb_key_down(void *data, Evas *e, Evas_Object *obj __UNUSED__,
evas_key_lock_on(e, "Caps_Lock");
else
evas_key_lock_off(e, "Caps_Lock");
evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, NULL);
evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
}
static void
@ -325,7 +329,7 @@ _ecore_evas_buffer_cb_key_up(void *data, Evas *e, Evas_Object *obj __UNUSED__, v
evas_key_lock_on(e, "Caps_Lock");
else
evas_key_lock_off(e, "Caps_Lock");
evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, NULL);
evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
}
static void
@ -486,7 +490,7 @@ ecore_evas_buffer_new(int w, int h)
evas_key_lock_add(ee->evas, "Num_Lock");
evas_key_lock_add(ee->evas, "Scroll_Lock");
evas_event_feed_mouse_in(ee->evas, NULL);
evas_event_feed_mouse_in(ee->evas, 0, NULL);
ecore_evases = _ecore_list_prepend(ecore_evases, ee);
return ee;

View File

@ -17,7 +17,7 @@ static Ecore_Event_Handler *ecore_evas_event_handlers[5];
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
static void
_ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y)
_ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
{
int fbw, fbh;
@ -45,13 +45,13 @@ _ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y)
(fbw - ee->w) + ee->w - x - 1 - ee->prop.cursor.hot.y);
}
if (ee->rotation == 0)
evas_event_feed_mouse_move(ee->evas, x, y, NULL);
evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
else if (ee->rotation == 90)
evas_event_feed_mouse_move(ee->evas, (fbh - ee->h) + ee->h - y - 1, x, NULL);
evas_event_feed_mouse_move(ee->evas, (fbh - ee->h) + ee->h - y - 1, x, timestamp, NULL);
else if (ee->rotation == 180)
evas_event_feed_mouse_move(ee->evas, (fbw - ee->w) + ee->w - x - 1, (fbh - ee->h) + ee->h - y - 1, NULL);
evas_event_feed_mouse_move(ee->evas, (fbw - ee->w) + ee->w - x - 1, (fbh - ee->h) + ee->h - y - 1, timestamp, NULL);
else if (ee->rotation == 270)
evas_event_feed_mouse_move(ee->evas, y, (fbw - ee->w) + ee->w - x - 1, NULL);
evas_event_feed_mouse_move(ee->evas, y, (fbw - ee->w) + ee->w - x - 1, timestamp, NULL);
}
static Ecore_Evas *
@ -107,7 +107,7 @@ _ecore_evas_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *eve
e = event;
ee = _ecore_evas_fb_match();
if (!ee) return 1; /* pass on event */
evas_event_feed_key_down(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, NULL);
evas_event_feed_key_down(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
return 0; /* dont pass it on */
}
@ -120,7 +120,7 @@ _ecore_evas_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *event
e = event;
ee = _ecore_evas_fb_match();
if (!ee) return 1; /* pass on event */
evas_event_feed_key_up(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, NULL);
evas_event_feed_key_up(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
return 0; /* dont pass it on */
}
@ -134,10 +134,10 @@ _ecore_evas_event_mouse_button_down(void *data __UNUSED__, int type __UNUSED__,
e = event;
ee = _ecore_evas_fb_match();
if (!ee) return 1; /* pass on event */
_ecore_evas_mouse_move_process(ee, e->x, e->y);
_ecore_evas_mouse_move_process(ee, e->x, e->y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
evas_event_feed_mouse_down(ee->evas, e->button, flags, NULL);
evas_event_feed_mouse_down(ee->evas, e->button, flags, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
return 0; /* dont pass it on */
}
@ -150,8 +150,8 @@ _ecore_evas_event_mouse_button_up(void *data __UNUSED__, int type __UNUSED__, vo
e = event;
ee = _ecore_evas_fb_match();
if (!ee) return 1; /* pass on event */
_ecore_evas_mouse_move_process(ee, e->x, e->y);
evas_event_feed_mouse_up(ee->evas, e->button, EVAS_BUTTON_NONE, NULL);
_ecore_evas_mouse_move_process(ee, e->x, e->y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
evas_event_feed_mouse_up(ee->evas, e->button, EVAS_BUTTON_NONE, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
return 0; /* dont pass it on */
}
@ -164,7 +164,7 @@ _ecore_evas_event_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *e
e = event;
ee = _ecore_evas_fb_match();
if (!ee) return 1; /* pass on event */
_ecore_evas_mouse_move_process(ee, e->x, e->y);
_ecore_evas_mouse_move_process(ee, e->x, e->y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
return 0; /* dont pass it on */
}
@ -311,7 +311,7 @@ _ecore_evas_rotation_set(Ecore_Evas *ee, int rotation)
evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
else
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
_ecore_evas_mouse_move_process(ee, ee->mouse.x, ee->mouse.y);
_ecore_evas_mouse_move_process(ee, ee->mouse.x, ee->mouse.y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
if (ee->func.fn_resize) ee->func.fn_resize(ee);
}
@ -532,7 +532,7 @@ ecore_evas_fb_new(char *disp_name, int rotation, int w, int h)
evas_key_lock_add(ee->evas, "Num_Lock");
evas_key_lock_add(ee->evas, "Scroll_Lock");
evas_event_feed_mouse_in(ee->evas, NULL);
evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
ecore_evases = _ecore_list_prepend(ecore_evases, ee);
return ee;

View File

@ -193,7 +193,7 @@ _ecore_evas_x_render(Ecore_Evas *ee)
}
static void
_ecore_evas_x_mouse_move_process(Ecore_Evas *ee, int x, int y)
_ecore_evas_x_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
{
ee->mouse.x = x;
ee->mouse.y = y;
@ -218,13 +218,13 @@ _ecore_evas_x_mouse_move_process(Ecore_Evas *ee, int x, int y)
ee->w - x - 1 - ee->prop.cursor.hot.y);
}
if (ee->rotation == 0)
evas_event_feed_mouse_move(ee->evas, x, y, NULL);
evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
else if (ee->rotation == 90)
evas_event_feed_mouse_move(ee->evas, ee->h - y - 1, x, NULL);
evas_event_feed_mouse_move(ee->evas, ee->h - y - 1, x, timestamp, NULL);
else if (ee->rotation == 180)
evas_event_feed_mouse_move(ee->evas, ee->w - x - 1, ee->h - y - 1, NULL);
evas_event_feed_mouse_move(ee->evas, ee->w - x - 1, ee->h - y - 1, timestamp, NULL);
else if (ee->rotation == 270)
evas_event_feed_mouse_move(ee->evas, y, ee->w - x - 1, NULL);
evas_event_feed_mouse_move(ee->evas, y, ee->w - x - 1, timestamp, NULL);
}
static char *
@ -329,7 +329,7 @@ _ecore_evas_x_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *e
ee = _ecore_evas_x_match(e->win);
if (!ee) return 1; /* pass on event */
_ecore_evas_x_modifier_locks_update(ee, e->modifiers);
evas_event_feed_key_down(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, NULL);
evas_event_feed_key_down(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, e->time, NULL);
return 1;
}
@ -343,7 +343,7 @@ _ecore_evas_x_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *eve
ee = _ecore_evas_x_match(e->win);
if (!ee) return 1; /* pass on event */
_ecore_evas_x_modifier_locks_update(ee, e->modifiers);
evas_event_feed_key_up(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, NULL);
evas_event_feed_key_up(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, e->time, NULL);
return 1;
}
@ -358,10 +358,10 @@ _ecore_evas_x_event_mouse_button_down(void *data __UNUSED__, int type __UNUSED__
ee = _ecore_evas_x_match(e->win);
if (!ee) return 1; /* pass on event */
_ecore_evas_x_modifier_locks_update(ee, e->modifiers);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
evas_event_feed_mouse_down(ee->evas, e->button, flags, NULL);
evas_event_feed_mouse_down(ee->evas, e->button, flags, e->time, NULL);
return 1;
}
@ -375,8 +375,8 @@ _ecore_evas_x_event_mouse_button_up(void *data __UNUSED__, int type __UNUSED__,
ee = _ecore_evas_x_match(e->win);
if (!ee) return 1; /* pass on event */
_ecore_evas_x_modifier_locks_update(ee, e->modifiers);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y);
evas_event_feed_mouse_up(ee->evas, e->button, EVAS_BUTTON_NONE, NULL);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
evas_event_feed_mouse_up(ee->evas, e->button, EVAS_BUTTON_NONE, e->time, NULL);
return 1;
}
@ -393,8 +393,8 @@ _ecore_evas_x_event_mouse_wheel(void *data __UNUSED__, int type __UNUSED__, void
return 1; /* pass on event */
_ecore_evas_x_modifier_locks_update(ee, e->modifiers);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y);
evas_event_feed_mouse_wheel(ee->evas, e->direction, e->z, NULL);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
evas_event_feed_mouse_wheel(ee->evas, e->direction, e->z, e->time, NULL);
return 1;
}
@ -409,7 +409,7 @@ _ecore_evas_x_event_mouse_move(void *data __UNUSED__, int type __UNUSED__, void
ee = _ecore_evas_x_match(e->win);
if (!ee) return 1; /* pass on event */
_ecore_evas_x_modifier_locks_update(ee, e->modifiers);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
return 1;
}
@ -426,8 +426,8 @@ _ecore_evas_x_event_mouse_in(void *data __UNUSED__, int type __UNUSED__, void *e
/* if (e->mode != ECORE_X_EVENT_MODE_NORMAL) return 0; */
if (ee->func.fn_mouse_in) ee->func.fn_mouse_in(ee);
_ecore_evas_x_modifier_locks_update(ee, e->modifiers);
evas_event_feed_mouse_in(ee->evas, NULL);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y);
evas_event_feed_mouse_in(ee->evas, e->time, NULL);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
return 1;
}
@ -443,8 +443,8 @@ _ecore_evas_x_event_mouse_out(void *data __UNUSED__, int type __UNUSED__, void *
if (e->event_win == ee->engine.x.win_container) return 0;
/* if (e->mode != ECORE_X_EVENT_MODE_NORMAL) return 0; */
_ecore_evas_x_modifier_locks_update(ee, e->modifiers);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y);
evas_event_feed_mouse_out(ee->evas, NULL);
_ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
evas_event_feed_mouse_out(ee->evas, e->time, NULL);
if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee);
if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object);
return 1;
@ -596,7 +596,8 @@ _ecore_evas_x_event_window_configure(void *data __UNUSED__, int type __UNUSED__,
{
if ((ee->expecting_resize.w == ee->w) &&
(ee->expecting_resize.h == ee->h))
_ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y);
_ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
ecore_x_current_time_get());
ee->expecting_resize.w = 0;
ee->expecting_resize.h = 0;
}
@ -1013,14 +1014,16 @@ _ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation)
ecore_evas_size_max_set(ee, maxh, maxw);
ecore_evas_size_base_set(ee, baseh, basew);
ecore_evas_size_step_set(ee, steph, stepw);
_ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y);
_ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
ecore_x_current_time_get());
}
else
{
einfo->info.rotation = rotation;
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
ee->rotation = rotation;
_ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y);
_ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
ecore_x_current_time_get());
if (ee->func.fn_resize) ee->func.fn_resize(ee);
}
if ((ee->rotation == 90) || (ee->rotation == 270))
@ -1432,7 +1435,8 @@ _ecore_evas_x_fullscreen_set(Ecore_Evas *ee, int on)
{
if ((ee->expecting_resize.w == ee->w) &&
(ee->expecting_resize.h == ee->h))
_ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y);
_ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
ecore_x_current_time_get());
ee->expecting_resize.w = 0;
ee->expecting_resize.h = 0;
}

View File

@ -98,15 +98,15 @@ main(int argc, char **argv)
pause_me = 2;
else
pause_me = 1;
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, NULL);
evas_event_feed_mouse_down(evas, ev.xbutton.button, EVAS_BUTTON_NONE, NULL);
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_down(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case ButtonRelease:
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, NULL);
evas_event_feed_mouse_up(evas, ev.xbutton.button, EVAS_BUTTON_NONE, NULL);
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_up(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case MotionNotify:
evas_event_feed_mouse_move(evas, ev.xmotion.x, ev.xmotion.y, NULL);
evas_event_feed_mouse_move(evas, ev.xmotion.x, ev.xmotion.y, 0, NULL);
break;
case Expose:
evas_damage_rectangle_add(evas,

View File

@ -100,15 +100,15 @@ main(int argc, char **argv)
pause_me = 2;
else
pause_me = 1;
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, NULL);
evas_event_feed_mouse_down(evas, ev.xbutton.button, EVAS_BUTTON_NONE, NULL);
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_down(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case ButtonRelease:
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, NULL);
evas_event_feed_mouse_up(evas, ev.xbutton.button, EVAS_BUTTON_NONE, NULL);
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_up(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case MotionNotify:
evas_event_feed_mouse_move(evas, ev.xmotion.x, ev.xmotion.y, NULL);
evas_event_feed_mouse_move(evas, ev.xmotion.x, ev.xmotion.y, 0, NULL);
break;
case Expose:
evas_damage_rectangle_add(evas,

View File

@ -192,15 +192,15 @@ main(int argc, char **argv)
else
pause_me = 1;
#endif
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, NULL);
evas_event_feed_mouse_down(evas, ev.xbutton.button, EVAS_BUTTON_NONE, NULL);
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_down(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case ButtonRelease:
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, NULL);
evas_event_feed_mouse_up(evas, ev.xbutton.button, EVAS_BUTTON_NONE, NULL);
evas_event_feed_mouse_move(evas, ev.xbutton.x, ev.xbutton.y, 0, NULL);
evas_event_feed_mouse_up(evas, ev.xbutton.button, EVAS_BUTTON_NONE, 0, NULL);
break;
case MotionNotify:
evas_event_feed_mouse_move(evas, ev.xmotion.x, ev.xmotion.y, NULL);
evas_event_feed_mouse_move(evas, ev.xmotion.x, ev.xmotion.y, 0, NULL);
break;
case Expose:
evas_damage_rectangle_add(evas,

View File

@ -249,21 +249,21 @@ main(int argc, char **argv)
else
pause_me = 1;
#endif
evas_event_feed_mouse_move(evas, ev->event_x, ev->event_y, NULL);
evas_event_feed_mouse_down(evas, ev->state, EVAS_BUTTON_NONE, NULL);
evas_event_feed_mouse_move(evas, ev->event_x, ev->event_y, 0, NULL);
evas_event_feed_mouse_down(evas, ev->state, EVAS_BUTTON_NONE, 0, NULL);
break;
}
case XCBButtonRelease: {
XCBButtonReleaseEvent *ev = (XCBButtonReleaseEvent *)e;
evas_event_feed_mouse_move(evas, ev->event_x, ev->event_y, NULL);
evas_event_feed_mouse_up(evas, ev->state, EVAS_BUTTON_NONE, NULL);
evas_event_feed_mouse_move(evas, ev->event_x, ev->event_y, 0, NULL);
evas_event_feed_mouse_up(evas, ev->state, EVAS_BUTTON_NONE, 0, NULL);
break;
}
case XCBMotionNotify: {
XCBMotionNotifyEvent *ev = (XCBMotionNotifyEvent *)e;
evas_event_feed_mouse_move(evas, ev->event_x, ev->event_y, NULL);
evas_event_feed_mouse_move(evas, ev->event_x, ev->event_y, 0, NULL);
break;
}
case Expose: {

View File

@ -162,6 +162,7 @@ struct _Evas_Event_Mouse_Down /** Mouse button press event */
Evas_Lock *locks;
Evas_Button_Flags flags;
unsigned int timestamp;
};
struct _Evas_Event_Mouse_Up /** Mouse butotn relase event */
@ -178,6 +179,7 @@ struct _Evas_Event_Mouse_Up /** Mouse butotn relase event */
Evas_Lock *locks;
Evas_Button_Flags flags;
unsigned int timestamp;
};
struct _Evas_Event_Mouse_In /** Mouse enter event */
@ -192,6 +194,7 @@ struct _Evas_Event_Mouse_In /** Mouse enter event */
void *data;
Evas_Modifier *modifiers;
Evas_Lock *locks;
unsigned int timestamp;
};
struct _Evas_Event_Mouse_Out /** Mouse leave event */
@ -206,6 +209,7 @@ struct _Evas_Event_Mouse_Out /** Mouse leave event */
void *data;
Evas_Modifier *modifiers;
Evas_Lock *locks;
unsigned int timestamp;
};
struct _Evas_Event_Mouse_Move /** Mouse button down event */
@ -222,6 +226,7 @@ struct _Evas_Event_Mouse_Move /** Mouse button down event */
void *data;
Evas_Modifier *modifiers;
Evas_Lock *locks;
unsigned int timestamp;
};
struct _Evas_Event_Mouse_Wheel /** Wheel event */
@ -240,6 +245,7 @@ struct _Evas_Event_Mouse_Wheel /** Wheel event */
void *data;
Evas_Modifier *modifiers;
Evas_Lock *locks;
unsigned int timestamp;
};
struct _Evas_Event_Key_Down /** Key press event */
@ -252,6 +258,7 @@ struct _Evas_Event_Key_Down /** Key press event */
const char *key; /**< The logical key : (eg shift+1 == exclamation) */
const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
const char *compose; /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
unsigned int timestamp;
};
struct _Evas_Event_Key_Up /** Key release event */
@ -264,6 +271,7 @@ struct _Evas_Event_Key_Up /** Key release event */
const char *key; /**< The logical key : (eg shift+1 == exclamation) */
const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
const char *compose; /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
unsigned int timestamp;
};
#ifdef __cplusplus
@ -518,14 +526,14 @@ extern "C" {
EAPI void evas_event_freeze (Evas *e);
EAPI void evas_event_thaw (Evas *e);
EAPI int evas_event_freeze_get (Evas *e);
EAPI void evas_event_feed_mouse_down (Evas *e, int b, Evas_Button_Flags flags, const void *data);
EAPI void evas_event_feed_mouse_up (Evas *e, int b, Evas_Button_Flags flags, const void *data);
EAPI void evas_event_feed_mouse_move (Evas *e, int x, int y, const void *data);
EAPI void evas_event_feed_mouse_in (Evas *e, const void *data);
EAPI void evas_event_feed_mouse_out (Evas *e, const void *data);
EAPI void evas_event_feed_mouse_wheel (Evas *e, int direction, int z, const void *data);
EAPI void evas_event_feed_key_down (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, const void *data);
EAPI void evas_event_feed_key_up (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, const void *data);
EAPI void evas_event_feed_mouse_down (Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_mouse_up (Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_mouse_move (Evas *e, int x, int y, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_mouse_in (Evas *e, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_mouse_out (Evas *e, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_mouse_wheel (Evas *e, int direction, int z, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_key_down (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_key_up (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data);
EAPI void evas_object_focus_set (Evas_Object *obj, Evas_Bool focus);
EAPI Evas_Bool evas_object_focus_get (Evas_Object *obj);

View File

@ -202,6 +202,7 @@ evas_object_clip_set(Evas_Object *obj, Evas_Object *clip)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
@ -289,6 +290,7 @@ evas_object_clip_unset(Evas_Object *obj)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}

View File

@ -183,7 +183,7 @@ evas_event_freeze_get(Evas *e)
*
*/
void
evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, const void *data)
evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
{
Evas_List *l, *copy;
@ -196,6 +196,7 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, const void *
e->pointer.button |= (1 << (b - 1));
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
copy = evas_event_list_copy(e->pointer.object.in);
for (l = copy; l; l = l->next)
@ -216,6 +217,7 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, const void *
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.flags = flags;
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev);
}
@ -229,7 +231,7 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, const void *
*
*/
void
evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, const void *data)
evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
{
Evas_List *l, *copy;
@ -242,6 +244,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, const void *da
e->pointer.button &= ~(1 << (b - 1));
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
copy = evas_event_list_copy(e->pointer.object.in);
for (l = copy; l; l = l->next)
@ -261,6 +264,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, const void *da
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.flags = flags;
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev);
}
@ -293,6 +297,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, const void *da
ev.data = (void *)data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
}
@ -319,6 +324,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, const void *da
ev.data = (void *)data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
}
@ -333,7 +339,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, const void *da
/* and set up the new one */
e->pointer.object.in = ins;
if (e->pointer.inside)
evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y, data);
evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y, timestamp, data);
}
}
@ -344,7 +350,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, const void *da
*
*/
void
evas_event_feed_mouse_wheel(Evas *e, int direction, int z, const void *data)
evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestamp, const void *data)
{
Evas_List *l, *copy;
@ -353,6 +359,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, const void *data)
MAGIC_CHECK_END();
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
copy = evas_event_list_copy(e->pointer.object.in);
@ -370,6 +377,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, const void *data)
ev.data = (void *) data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev);
}
@ -385,7 +393,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, const void *data)
*
*/
void
evas_event_feed_mouse_move(Evas *e, int x, int y, const void *data)
evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const void *data)
{
int px, py;
Evas_Coord pcx, pcy;
@ -400,6 +408,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, const void *data)
pcy = e->pointer.canvas_y;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
e->pointer.x = x;
e->pointer.y = y;
@ -441,6 +450,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, const void *data)
ev.data = (void *)data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
}
@ -470,6 +480,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, const void *data)
ev.data = (void *)data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
}
@ -518,6 +529,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, const void *data)
ev.data = (void *)data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
}
@ -536,6 +548,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, const void *data)
ev.data = (void *)data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
}
@ -561,6 +574,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, const void *data)
ev.data = (void *)data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
}
@ -579,7 +593,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, const void *data)
*
*/
void
evas_event_feed_mouse_in(Evas *e, const void *data)
evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
{
Evas_List *ins;
Evas_List *l;
@ -590,6 +604,7 @@ evas_event_feed_mouse_in(Evas *e, const void *data)
e->pointer.inside = 1;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
if (e->pointer.mouse_grabbed != 0) return;
@ -614,6 +629,7 @@ evas_event_feed_mouse_in(Evas *e, const void *data)
ev.data = (void *)data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
}
@ -622,7 +638,7 @@ evas_event_feed_mouse_in(Evas *e, const void *data)
e->pointer.object.in = evas_list_free(e->pointer.object.in);
/* and set up the new one */
e->pointer.object.in = ins;
evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y, data);
evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y, timestamp, data);
}
/**
@ -632,7 +648,7 @@ evas_event_feed_mouse_in(Evas *e, const void *data)
*
*/
void
evas_event_feed_mouse_out(Evas *e, const void *data)
evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
{
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return;
@ -640,6 +656,7 @@ evas_event_feed_mouse_out(Evas *e, const void *data)
e->pointer.inside = 0;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
/* if our mouse button is grabbed to any objects */
if (e->pointer.mouse_grabbed == 0)
@ -665,6 +682,7 @@ evas_event_feed_mouse_out(Evas *e, const void *data)
ev.data = (void *)data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
ev.timestamp = timestamp;
if (!e->events_frozen)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
}
@ -682,13 +700,14 @@ evas_event_feed_mouse_out(Evas *e, const void *data)
*
*/
void
evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, const void *data)
evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
{
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
if (!keyname) return;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
{
Evas_Event_Key_Down ev;
int exclusive;
@ -701,6 +720,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
ev.key = key;
ev.string = string;
ev.compose = compose;
ev.timestamp = timestamp;
if (e->grabs)
{
Evas_List *l;
@ -763,13 +783,14 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
*
*/
void
evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, const void *data)
evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
{
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
if (!keyname) return;
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
{
Evas_Event_Key_Up ev;
int exclusive;
@ -782,6 +803,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
ev.key = key;
ev.string = string;
ev.compose = compose;
ev.timestamp = timestamp;
if (e->grabs)
{
Evas_List *l;
@ -857,6 +879,7 @@ evas_object_pass_events_set(Evas_Object *obj, Evas_Bool pass)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
@ -894,6 +917,7 @@ evas_object_repeat_events_set(Evas_Object *obj, Evas_Bool repeat)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}

View File

@ -168,7 +168,11 @@ evas_object_layer_set(Evas_Object *obj, int l)
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
if (evas_list_find(obj->layer->evas->pointer.object.in, obj))
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y, NULL);
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
evas_object_inform_call_restack(obj);
}

View File

@ -161,6 +161,7 @@ evas_object_line_xy_set(Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coo
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}

View File

@ -494,6 +494,7 @@ evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
@ -558,6 +559,7 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
@ -645,6 +647,7 @@ evas_object_show(Evas_Object *obj)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
@ -691,6 +694,7 @@ evas_object_hide(Evas_Object *obj)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
if (obj->mouse_grabbed > 0)
{

View File

@ -156,6 +156,7 @@ evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
@ -202,6 +203,7 @@ evas_object_polygon_points_clear(Evas_Object *obj)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
evas_object_inform_call_move(obj);
evas_object_inform_call_resize(obj);

View File

@ -233,6 +233,7 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
@ -321,6 +322,7 @@ evas_object_text_text_set(Evas_Object *obj, const char *text)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
evas_object_inform_call_resize(obj);
}

View File

@ -82,7 +82,11 @@ evas_object_raise(Evas_Object *obj)
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y, NULL);
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
}
@ -131,7 +135,11 @@ evas_object_lower(Evas_Object *obj)
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y, NULL);
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
}
@ -188,7 +196,11 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y, NULL);
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
}
@ -245,7 +257,11 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y, NULL);
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
}

View File

@ -295,6 +295,7 @@ struct _Evas
Evas_Object *focused;
Evas_Modifier modifiers;
Evas_Lock locks;
unsigned int last_timestamp;
};
struct _Evas_Layer