diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X.h b/legacy/ecore/src/lib/ecore_x/Ecore_X.h index a1e7fad32f..b6e71a289a 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X.h @@ -1284,6 +1284,7 @@ EAPI void ecore_x_window_key_ungrab(Ecore_X_Window win, char *key, EAPI void ecore_x_focus_reset(void); EAPI void ecore_x_events_allow_all(void); EAPI void ecore_x_pointer_last_xy_get(int *x, int *y); +EAPI void ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y); #ifdef __cplusplus } diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x.c b/legacy/ecore/src/lib/ecore_x/ecore_x.c index d6e885b297..547527f65c 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x.c @@ -1551,6 +1551,18 @@ ecore_x_pointer_last_xy_get(int *x, int *y) if (x) *x = _ecore_x_event_last_root_x; if (y) *y = _ecore_x_event_last_root_y; } + +void +ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y) +{ + Window rwin, cwin; + int rx, ry, wx, wy; + unsigned int mask; + + XQueryPointer(_ecore_x_disp, win, &rwin, &cwin, &rx, &ry, &wx, &wy, &mask); + if (x) *x = wx; + if (y) *y = wy; +} /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/