From 744dfc58ff3749449e0928648b037adad7851b4f Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 25 Jul 2005 09:55:47 +0000 Subject: [PATCH] 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 --- src/bin/e_actions.c | 5 +-- src/bin/e_border.c | 54 ++++++++++++++-------------- src/bin/e_gadman.c | 2 +- src/bin/e_menu.c | 25 ++++++------- src/bin/e_menu.h | 2 +- src/bin/e_test.c | 4 +-- src/bin/e_utils.c | 2 +- src/modules/battery/e_mod_main.c | 2 +- src/modules/clock/e_mod_main.c | 2 +- src/modules/cpufreq/e_mod_main.c | 2 +- src/modules/ibar/e_mod_main.c | 4 +-- src/modules/ibox/e_mod_main.c | 2 +- src/modules/pager/e_mod_main.c | 2 +- src/modules/start/e_mod_main.c | 8 ++--- src/modules/temperature/e_mod_main.c | 2 +- 15 files changed, 61 insertions(+), 57 deletions(-) diff --git a/src/bin/e_actions.c b/src/bin/e_actions.c index 688317964..f592b43e0 100644 --- a/src/bin/e_actions.c +++ b/src/bin/e_actions.c @@ -614,7 +614,8 @@ ACT_FN_GO(menu_show) ecore_x_pointer_xy_get(zone->container->win, &x, &y); e_menu_post_deactivate_callback_set(m, _e_actions_cb_menu_end, NULL); e_menu_activate_mouse(m, zone, x, y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, + ecore_x_current_time_get()); } } } @@ -649,7 +650,7 @@ ACT_FN_GO_MOUSE(menu_show) y -= zone->container->y; e_menu_post_deactivate_callback_set(m, _e_actions_cb_menu_end, NULL); e_menu_activate_mouse(m, zone, x, y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, ev->time); e_util_container_fake_mouse_up_all_later(zone->container); } } diff --git a/src/bin/e_border.c b/src/bin/e_border.c index d3fff7f2c..f511debae 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -77,7 +77,7 @@ static void _e_border_resize_handle(E_Border *bd); static int _e_border_shade_animator(void *data); static void _e_border_cb_border_menu_end(void *data, E_Menu *m); -static void _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key); +static void _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_X_Time timestamp); static void _e_border_menu_cb_close(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_kill(void *data, E_Menu *m, E_Menu_Item *mi); @@ -1688,14 +1688,15 @@ e_border_act_menu_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev, int k { _e_border_menu_show(bd, bd->x + ev->x - bd->zone->container->x, - bd->y + ev->y - bd->zone->container->y, key); + bd->y + ev->y - bd->zone->container->y, key, + ev->time); } else { int x, y; ecore_x_pointer_xy_get(bd->zone->container->win, &x, &y); - _e_border_menu_show(bd, x, y, key); + _e_border_menu_show(bd, x, y, key, 0); } } @@ -3172,7 +3173,7 @@ _e_border_cb_signal_action(void *data, Evas_Object *obj, const char *emission, c Evas_Coord x, y; evas_pointer_canvas_xy_get(bd->bg_evas , &x, &y); - _e_border_menu_show(bd, x + bd->x, y + bd->y, 0); + _e_border_menu_show(bd, x + bd->x, y + bd->y, 0, 0); } else if (!strcmp(source, "raise")) { @@ -3255,8 +3256,8 @@ _e_border_cb_mouse_in(void *data, int type, void *event) #endif bd->mouse.current.mx = ev->root.x; bd->mouse.current.my = ev->root.y; - evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL); - evas_event_feed_mouse_in(bd->bg_evas, NULL); + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, ev->time, NULL); + evas_event_feed_mouse_in(bd->bg_evas, ev->time, NULL); return 1; } @@ -3325,8 +3326,8 @@ _e_border_cb_mouse_out(void *data, int type, void *event) #endif bd->mouse.current.mx = ev->root.x; bd->mouse.current.my = ev->root.y; - evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL); - evas_event_feed_mouse_out(bd->bg_evas, NULL); + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, ev->time, NULL); + evas_event_feed_mouse_out(bd->bg_evas, ev->time, NULL); return 1; } @@ -3417,8 +3418,8 @@ _e_border_cb_mouse_down(void *data, int type, void *event) if (ev->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK; if (ev->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK; - evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL); - evas_event_feed_mouse_down(bd->bg_evas, ev->button, flags, NULL); + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, ev->time, NULL); + evas_event_feed_mouse_down(bd->bg_evas, ev->button, flags, ev->time, NULL); } return 1; } @@ -3474,8 +3475,8 @@ _e_border_cb_mouse_up(void *data, int type, void *event) bd->drag.start = 0; - evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL); - evas_event_feed_mouse_up(bd->bg_evas, ev->button, EVAS_BUTTON_NONE, NULL); + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, ev->time, NULL); + evas_event_feed_mouse_up(bd->bg_evas, ev->button, EVAS_BUTTON_NONE, ev->time, NULL); return 1; } @@ -3588,13 +3589,14 @@ _e_border_cb_mouse_move(void *data, int type, void *event) e_drag_resize(drag, w, h); e_drag_start(drag, bd->drag.x, bd->drag.y); evas_event_feed_mouse_up(bd->bg_evas, 1, - EVAS_BUTTON_NONE, NULL); + EVAS_BUTTON_NONE, ev->time, + NULL); } bd->drag.start = 0; } } } - evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL); + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, ev->time, NULL); } return 1; } @@ -3610,8 +3612,8 @@ _e_border_cb_mouse_wheel(void *data, int type, void *event) if (ev->win != bd->event_win) return 1; bd->mouse.current.mx = ev->root.x; bd->mouse.current.my = ev->root.y; - evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL); - evas_event_feed_mouse_wheel(bd->bg_evas, ev->direction, ev->z, NULL); + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, ev->time, NULL); + evas_event_feed_mouse_wheel(bd->bg_evas, ev->direction, ev->z, ev->time, NULL); return 1; } @@ -4746,14 +4748,21 @@ _e_border_eval(E_Border *bd) bd->need_shape_export = 0; } + bd->changed = 0; + + bd->changes.stack = 0; + bd->changes.prop = 0; + bd->changes.border = 0; + if ((bd->take_focus) || (bd->want_focus)) { + bd->take_focus = 0; if ((e_config->focus_setting == E_FOCUS_NEW_WINDOW) || (bd->want_focus)) { + bd->want_focus = 0; if (!bd->lock_focus_out) e_border_focus_set(bd, 1, 1); - bd->want_focus = 0; } else { @@ -4772,14 +4781,7 @@ _e_border_eval(E_Border *bd) } } } - bd->take_focus = 0; } - - bd->changed = 0; - - bd->changes.stack = 0; - bd->changes.prop = 0; - bd->changes.border = 0; if (bd->remember) e_remember_update(bd->remember, bd); @@ -5573,7 +5575,7 @@ _e_border_menu_cb_remember_apply_run(void *data, E_Menu *m, E_Menu_Item *mi) } static void -_e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key) +_e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_X_Time timestamp) { E_Menu *m; E_Menu_Item *mi; @@ -5935,7 +5937,7 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key) E_MENU_POP_DIRECTION_DOWN); else e_menu_activate_mouse(m, bd->zone, x, y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, timestamp); } static void diff --git a/src/bin/e_gadman.c b/src/bin/e_gadman.c index b3287dc87..ba3a07d93 100644 --- a/src/bin/e_gadman.c +++ b/src/bin/e_gadman.c @@ -1067,7 +1067,7 @@ _e_gadman_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_in { e_menu_post_deactivate_callback_set(m, _e_gadman_cb_menu_end, gmc); e_menu_activate_mouse(m, gmc->zone, ev->output.x, ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, ev->timestamp); e_util_container_fake_mouse_up_all_later(gmc->zone->container); } } diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index 66b71bc21..dfe43a588 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -73,7 +73,7 @@ static void _e_menu_cb_item_submenu_post_default (void *data, E_Menu *m, E_Menu /* local subsystem globals */ static Ecore_X_Window _e_menu_win = 0; static Evas_List *_e_active_menus = NULL; -static double _e_menu_activate_time = 0.0; +static Ecore_X_Time _e_menu_activate_time = 0; static int _e_menu_activate_floating = 0; static Ecore_Timer *_e_menu_scroll_timer = NULL; static double _e_menu_scroll_start = 0.0; @@ -150,7 +150,7 @@ e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE); E_OBJECT_CHECK(zone); E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE); - _e_menu_activate_time = 0.0; + _e_menu_activate_time = 0; _e_menu_activate_floating = 0; _e_menu_activate_internal(m, zone); switch (dir) @@ -197,7 +197,7 @@ e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir } void -e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir) +e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir, Ecore_X_Time activate_time) { E_Menu_Item *pmi; @@ -205,7 +205,7 @@ e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int d E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE); E_OBJECT_CHECK(zone); E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE); - _e_menu_activate_time = ecore_time_get(); + _e_menu_activate_time = activate_time; _e_menu_activate_floating = 0; _e_menu_activate_internal(m, zone); switch (dir) @@ -249,7 +249,7 @@ e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir) E_OBJECT_TYPE_CHECK(m, E_MENU_TYPE); E_OBJECT_CHECK(zone); E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE); - _e_menu_activate_time = 0.0; + _e_menu_activate_time = 0; _e_menu_activate_floating = 0; _e_menu_activate_internal(m, zone); switch (dir) @@ -1183,8 +1183,8 @@ _e_menu_realize(E_Menu *m) m->evas = ecore_evas_get(m->ecore_evas); evas_event_freeze(m->evas); /* move cursor out to avoid event cycles during setup */ - evas_event_feed_mouse_in(m->evas, NULL); - evas_event_feed_mouse_move(m->evas, -1000000, -1000000, NULL); + evas_event_feed_mouse_in(m->evas, ecore_x_current_time_get(), NULL); + evas_event_feed_mouse_move(m->evas, -1000000, -1000000, ecore_x_current_time_get(), NULL); ecore_x_window_shape_events_select(m->evas_win, 1); ecore_evas_name_class_set(m->ecore_evas, "E", "_e_menu_window"); ecore_evas_title_set(m->ecore_evas, "E Menu"); @@ -2279,15 +2279,15 @@ static int _e_menu_cb_mouse_up(void *data, int type, void *event) { Ecore_X_Event_Mouse_Button_Up *ev; - double t; + Ecore_X_Time t; int ret; ev = event; if (ev->win != _e_menu_win) return 1; - t = ecore_time_get(); - if ((_e_menu_activate_time != 0.0) && - ((t - _e_menu_activate_time) < e_config->menus_click_drag_timeout)) + t = ev->time - _e_menu_activate_time; + if ((_e_menu_activate_time != 0) && + (t < (e_config->menus_click_drag_timeout * 1000))) { _e_menu_activate_floating = 1; return 1; @@ -2297,7 +2297,7 @@ _e_menu_cb_mouse_up(void *data, int type, void *event) if (ret == 1) { /* allow mouse to pop down menu if clicked elsewhere */ -/* if (_e_menu_activate_time != 0.0) */ +/* if (_e_menu_activate_time != 0) */ _e_menu_deactivate_all(); } else if (ret == -1) @@ -2358,6 +2358,7 @@ _e_menu_cb_mouse_move(void *data, int type, void *event) evas_event_feed_mouse_move(m->evas, ev->x - m->cur.x + m->zone->x, ev->y - m->cur.y + m->zone->y, + ev->time, NULL); } } diff --git a/src/bin/e_menu.h b/src/bin/e_menu.h index dfb373fdb..f9cca51e2 100644 --- a/src/bin/e_menu.h +++ b/src/bin/e_menu.h @@ -133,7 +133,7 @@ EAPI int e_menu_shutdown(void); EAPI E_Menu *e_menu_new(void); EAPI void e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir); -EAPI void e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir); +EAPI void e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir, Ecore_X_Time activate_time); EAPI void e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir); EAPI void e_menu_deactivate(E_Menu *m); EAPI int e_menu_freeze(E_Menu *m); diff --git a/src/bin/e_test.c b/src/bin/e_test.c index 02bfe2623..0bf6a585f 100644 --- a/src/bin/e_test.c +++ b/src/bin/e_test.c @@ -194,7 +194,7 @@ _e_test_timer(void *data) m = e_int_menus_main_new(); e_menu_activate_mouse(m, e_container_zone_number_get(e_container_current_get(man), 0), - 0, 0, 1, 1, E_MENU_POP_DIRECTION_DOWN); + 0, 0, 1, 1, E_MENU_POP_DIRECTION_DOWN, 0); ecore_timer_add(0.05, _e_test_timer, m); return 0; } @@ -277,7 +277,7 @@ _e_test_internal(E_Container *con) m = e_int_menus_main_new(); e_menu_activate_mouse(m, e_container_zone_number_get(e_container_current_get(man), 0), - 0, 0, 1, 1, E_MENU_POP_DIRECTION_DOWN); + 0, 0, 1, 1, E_MENU_POP_DIRECTION_DOWN, 0); ecore_timer_add(0.02, _e_test_timer, m); } } diff --git a/src/bin/e_utils.c b/src/bin/e_utils.c index b1f86b5d9..2b4b4b980 100644 --- a/src/bin/e_utils.c +++ b/src/bin/e_utils.c @@ -101,7 +101,7 @@ _e_util_container_fake_mouse_up_cb(void *data) info = data; if (info) { - evas_event_feed_mouse_up(info->con->bg_evas, info->button, EVAS_BUTTON_NONE, NULL); + evas_event_feed_mouse_up(info->con->bg_evas, info->button, EVAS_BUTTON_NONE, ecore_x_current_time_get(), NULL); e_object_unref(E_OBJECT(info->con)); free(info); } diff --git a/src/modules/battery/e_mod_main.c b/src/modules/battery/e_mod_main.c index 197a93dd7..2aec764a5 100644 --- a/src/modules/battery/e_mod_main.c +++ b/src/modules/battery/e_mod_main.c @@ -621,7 +621,7 @@ _battery_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_i { e_menu_activate_mouse(ef->menu, e_zone_current_get(ef->con), ev->output.x, ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, ev->timestamp); e_util_container_fake_mouse_up_all_later(ef->con); } } diff --git a/src/modules/clock/e_mod_main.c b/src/modules/clock/e_mod_main.c index 6451b2154..30e7f7f1b 100644 --- a/src/modules/clock/e_mod_main.c +++ b/src/modules/clock/e_mod_main.c @@ -408,7 +408,7 @@ _clock_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_inf { e_menu_activate_mouse(face->menu, e_zone_current_get(face->con), ev->output.x, ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, ev->timestamp); e_util_container_fake_mouse_up_all_later(face->con); } } diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c index ad0be96be..7c176c533 100644 --- a/src/modules/cpufreq/e_mod_main.c +++ b/src/modules/cpufreq/e_mod_main.c @@ -894,7 +894,7 @@ _cpufreq_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_i { e_menu_activate_mouse(ef->menu, e_zone_current_get(ef->con), ev->output.x, ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, ev->timestamp); e_util_container_fake_mouse_up_all_later(ef->con); } } diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index 42a51bdbb..6fb863a17 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -1340,7 +1340,7 @@ _ibar_icon_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info e_drag_resize(d, w, h); e_drag_start(d, drag_x, drag_y); - evas_event_feed_mouse_up(ic->ibb->evas, 1, EVAS_BUTTON_NONE, NULL); + evas_event_feed_mouse_up(ic->ibb->evas, 1, EVAS_BUTTON_NONE, ev->timestamp, NULL); e_app_remove(ic->app); } } @@ -1386,7 +1386,7 @@ _ibar_bar_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { e_menu_activate_mouse(ibb->menu, e_zone_current_get(ibb->con), ev->output.x, ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, ev->timestamp); e_util_container_fake_mouse_up_later(ibb->con, 3); } } diff --git a/src/modules/ibox/e_mod_main.c b/src/modules/ibox/e_mod_main.c index 3d73bc84a..73a00b375 100644 --- a/src/modules/ibox/e_mod_main.c +++ b/src/modules/ibox/e_mod_main.c @@ -1050,7 +1050,7 @@ _ibox_box_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { e_menu_activate_mouse(ibb->menu, e_zone_current_get(ibb->con), ev->output.x, ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, ev->timestamp); e_util_container_fake_mouse_up_later(ibb->con, 3); } } diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c index 8a09b46fb..eaff5fefb 100644 --- a/src/modules/pager/e_mod_main.c +++ b/src/modules/pager/e_mod_main.c @@ -1338,7 +1338,7 @@ _pager_desk_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_inf { e_menu_activate_mouse(pd->face->menu, pd->face->zone, ev->output.x, ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, ev->timestamp); e_util_container_fake_mouse_up_all_later(pd->face->zone->container); } else if (ev->button == 1) diff --git a/src/modules/start/e_mod_main.c b/src/modules/start/e_mod_main.c index b96227689..27df2eecf 100644 --- a/src/modules/start/e_mod_main.c +++ b/src/modules/start/e_mod_main.c @@ -339,9 +339,9 @@ _start_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_inf ev = event_info; if (ev->button == 3) { - e_menu_activate_mouse(face->menu, e_zone_current_get(face->con), + e_menu_activate_mouse(face->menu, e_zone_current_get(face->con), ev->output.x, ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_AUTO); + E_MENU_POP_DIRECTION_AUTO, ev->timestamp); e_util_container_fake_mouse_up_all_later(face->con); } else if (ev->button == 1) @@ -352,9 +352,9 @@ _start_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_inf if (!face->main_menu) face->main_menu = e_int_menus_main_new(); e_menu_post_deactivate_callback_set(face->main_menu, _start_menu_cb_post_deactivate, face); - e_menu_activate_mouse(face->main_menu, e_zone_current_get(face->con), + e_menu_activate_mouse(face->main_menu, e_zone_current_get(face->con), x, y, w, h, - E_MENU_POP_DIRECTION_AUTO); + E_MENU_POP_DIRECTION_AUTO, ev->timestamp); e_util_container_fake_mouse_up_all_later(face->con); edje_object_signal_emit(face->button_object, "active", ""); } diff --git a/src/modules/temperature/e_mod_main.c b/src/modules/temperature/e_mod_main.c index 48d3736c5..c5689b457 100644 --- a/src/modules/temperature/e_mod_main.c +++ b/src/modules/temperature/e_mod_main.c @@ -770,7 +770,7 @@ _temperature_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *eve { e_menu_activate_mouse(ef->menu, e_zone_current_get(ef->con), ev->output.x, ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); + E_MENU_POP_DIRECTION_DOWN, ev->timestamp); e_util_container_fake_mouse_up_all_later(ef->con); } }