Помогите разобраться, уже всю голову сломал.
Необходимо написать программку которая эмитирует перемещение мышки с зажатой ЛКМ, и повращать ей стандартный глобус Marble.
Вот метод который это должен делать, но он работает на чем угодно кроме глобуса.Окна перемещает нормально, в пеинте фигуры таскает, а на глобусе в момент перемещения мышки (XWarpPointer) происходит mouseRelease О_о
Может кто сталкивался с проблемой, или просто знает как ее решить?
XQueryPointer(display, root_window,
&mouseEvent.xbutton.root, &mouseEvent.xbutton.window,
&mouseEvent.xbutton.x_root, &mouseEvent.xbutton.y_root,
&mouseEvent.xbutton.x, &mouseEvent.xbutton.y, &mouseEvent.xbutton.state); mouseEvent.xbutton.subwindow = mouseEvent.xbutton.window; int limiter = 0;
while(mouseEvent.xbutton.subwindow && limiter < LIMIT_SUBWINDOW_FAINDER)
{
limiter++;
mouseEvent.xbutton.window = mouseEvent.xbutton.subwindow;
XQueryPointer(display, mouseEvent.xbutton.window,
&mouseEvent.xbutton.root, &mouseEvent.xbutton.subwindow,
&mouseEvent.xbutton.x_root, &mouseEvent.xbutton.y_root,
&mouseEvent.xbutton.x, &mouseEvent.xbutton.y, &mouseEvent.xbutton.state);
} mouseEvent.type = ButtonPress;
mouseEvent.xbutton.state = 0x100;
XSendEvent(display, root_window, True, 0xfff, &mouseEvent); XNextEvent(display, &mouseEvent);
XFlush(display); XSelectInput(display, root_window, 0x100 );
XWarpPointer(display, None, root_window, 0, 0, 0, 0, _x, _y));//Тут по неведомой причине происходит mouseRelease
XFlush(display);
}
LogHelper::addEndTag("moveWithPressed");
}
void MouseController::moveWithPressed(int _x, int _y)
{
Display *display;
Window root_window;
display = XOpenDisplay(0);
root_window = XRootWindow(display, 0);
XEvent mouseEvent;
mouseEvent.xbutton.button = Button1;
mouseEvent.xbutton.same_screen = True;