static Eina_Bool _e_pointer_cb_idle_poller(void *data) { E_Pointer *ptr; int x = 0, y = 0; if (!(ptr = data)) return ECORE_CALLBACK_RENEW; if ((e_powersave_mode_get() >= E_POWERSAVE_MODE_MEDIUM) || (!e_config->idle_cursor)) { ptr->idle_poll = NULL; return ECORE_CALLBACK_CANCEL; } if (ptr->canvas) ecore_evas_pointer_xy_get(ptr->ee, &x, &y); #ifndef HAVE_WAYLAND_ONLY else ecore_x_pointer_xy_get(ptr->win, &x, &y); #endif if ((ptr->x != x) || (ptr->y != y)) { ptr->x = x; ptr->y = y; if (ptr->idle) _e_pointer_active(ptr); return ECORE_CALLBACK_RENEW; } if (!ptr->idle) _e_pointer_idle(ptr); return ECORE_CALLBACK_RENEW; }
static void _cb_item_open(void *data, Evas_Object *obj, const char *emission, const char *source) { News_Item *ni; E_Manager *man; E_Zone *zone; int cx, cy; ni = data; switch (ni->config->openmethod) { case NEWS_ITEM_OPENMETHOD_VIEWER: if (!ni->viewer) news_viewer_create(ni); else news_viewer_destroy(ni->viewer); break; case NEWS_ITEM_OPENMETHOD_BROWSER: news_menu_browser_show(ni); man = e_manager_current_get(); zone = e_util_zone_current_get(man); ecore_x_pointer_xy_get(man->root, &cx, &cy); e_menu_activate_mouse(ni->menu_browser, zone, cx, cy, 1, 1, E_MENU_POP_DIRECTION_DOWN, ecore_x_current_time_get()); break; } }
static Eina_Bool _e_pointer_cb_idle_pre(void *data) { E_Pointer *ptr; if (!(ptr = data)) return ECORE_CALLBACK_RENEW; if (ptr->canvas) ecore_evas_pointer_xy_get(ptr->ee, &ptr->x, &ptr->y); #ifndef HAVE_WAYLAND_ONLY else ecore_x_pointer_xy_get(ptr->win, &ptr->x, &ptr->y); #endif ptr->idle_tmr = ecore_timer_loop_add(4.0, _e_pointer_cb_idle_wait, ptr); return ECORE_CALLBACK_CANCEL; }