It is possible to set pointer coordinate using absolute numbers, but
getting them back will always give us screen relative ones. Do the
necessary calculations manually so we return sane values to the caller.
#include "inpututils.h"
#endif
#include "mi.h"
+#include "mipointer.h"
#include "exevents.h"
+#include "scrnintstr.h"
#include "xkbsrv.h"
#include "xkbstr.h"
#include "xserver-properties.h"
void vncGetPointerPos(int *x, int *y)
{
- if (vncPointerDev != NULL)
- GetSpritePosition(vncPointerDev, &cursorPosX, &cursorPosY);
+ if (vncPointerDev != NULL) {
+ ScreenPtr ptrScreen;
+
+ miPointerGetPosition(vncPointerDev, &cursorPosX, &cursorPosY);
+
+ /* Pointer coordinates are screen relative */
+ ptrScreen = miPointerGetScreen(vncPointerDev);
+ cursorPosX += ptrScreen->x;
+ cursorPosY += ptrScreen->y;
+ }
*x = cursorPosX;
*y = cursorPosY;