Fix error converting simulated events press/release to clicks

Move logic that sets previous event state into WM_event_add_simulate.
This commit is contained in:
Campbell Barton
2021-02-27 22:05:01 +11:00
parent 9cfb320208
commit e3c11b36da
2 changed files with 21 additions and 5 deletions

View File

@@ -647,11 +647,6 @@ static wmEvent *rna_Window_event_add_simulate(wmWindow *win,
e.alt = alt;
e.oskey = oskey;
e.prevx = win->eventstate->x;
e.prevy = win->eventstate->y;
e.prevval = win->eventstate->val;
e.prevtype = win->eventstate->type;
e.ascii = '\0';
e.utf8_buf[0] = '\0';
if (unicode != NULL) {

View File

@@ -148,8 +148,29 @@ wmEvent *WM_event_add_simulate(wmWindow *win, const wmEvent *event_to_add)
return NULL;
}
wmEvent *event = wm_event_add(win, event_to_add);
win->eventstate->x = event->x;
win->eventstate->y = event->y;
win->eventstate->prevval = event->prevval = win->eventstate->val;
win->eventstate->prevtype = event->prevtype = win->eventstate->type;
win->eventstate->prevx = event->prevx = win->eventstate->x;
win->eventstate->prevy = event->prevy = win->eventstate->y;
if (event->type == MOUSEMOVE) {
/* Pass. */
}
else {
win->eventstate->val = event->val;
win->eventstate->type = event->type;
if (ISMOUSE_BUTTON(event->type)) {
if (event->val == KM_PRESS) {
win->eventstate->prevclickx = event->x;
win->eventstate->prevclicky = event->y;
}
}
}
return event;
}