mirror of https://git.sr.ht/~rabbits/uxn
android: steal out-of-screen mouse activity and use it to toggle on-screen keyboard
This commit is contained in:
parent
939f7bb546
commit
c541d4f56b
25
src/uxnemu.c
25
src/uxnemu.c
|
@ -442,6 +442,27 @@ console_input(Uxn *u, char c)
|
||||||
return uxn_eval(u, devconsole->vector);
|
return uxn_eval(u, devconsole->vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
mouse_steal(SDL_Event *event)
|
||||||
|
{
|
||||||
|
#ifdef __ANDROID__
|
||||||
|
int x = event->motion.x - PAD, y = event->motion.y - PAD;
|
||||||
|
|
||||||
|
if(x < 0 || x > ppu.width || y < 0 || y > ppu.height) {
|
||||||
|
if(event->type == SDL_MOUSEBUTTONDOWN) {
|
||||||
|
if(SDL_IsTextInputActive())
|
||||||
|
SDL_StopTextInput();
|
||||||
|
else
|
||||||
|
SDL_StartTextInput();
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
(void)event;
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
run(Uxn *u)
|
run(Uxn *u)
|
||||||
{
|
{
|
||||||
|
@ -466,13 +487,13 @@ run(Uxn *u)
|
||||||
else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY)
|
else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY)
|
||||||
uxn_eval(u, peek16((devaudio0 + (event.type - audio0_event))->dat, 0));
|
uxn_eval(u, peek16((devaudio0 + (event.type - audio0_event))->dat, 0));
|
||||||
/* Mouse */
|
/* Mouse */
|
||||||
else if(event.type == SDL_MOUSEMOTION)
|
else if(event.type == SDL_MOUSEMOTION && !mouse_steal(&event))
|
||||||
mouse_pos(devmouse,
|
mouse_pos(devmouse,
|
||||||
clamp(event.motion.x - PAD, 0, uxn_screen.width - 1),
|
clamp(event.motion.x - PAD, 0, uxn_screen.width - 1),
|
||||||
clamp(event.motion.y - PAD, 0, uxn_screen.height - 1));
|
clamp(event.motion.y - PAD, 0, uxn_screen.height - 1));
|
||||||
else if(event.type == SDL_MOUSEBUTTONUP)
|
else if(event.type == SDL_MOUSEBUTTONUP)
|
||||||
mouse_up(devmouse, SDL_BUTTON(event.button.button));
|
mouse_up(devmouse, SDL_BUTTON(event.button.button));
|
||||||
else if(event.type == SDL_MOUSEBUTTONDOWN)
|
else if(event.type == SDL_MOUSEBUTTONDOWN && !mouse_steal(&event))
|
||||||
mouse_down(devmouse, SDL_BUTTON(event.button.button));
|
mouse_down(devmouse, SDL_BUTTON(event.button.button));
|
||||||
else if(event.type == SDL_MOUSEWHEEL)
|
else if(event.type == SDL_MOUSEWHEEL)
|
||||||
mouse_scroll(devmouse, event.wheel.x, event.wheel.y);
|
mouse_scroll(devmouse, event.wheel.x, event.wheel.y);
|
||||||
|
|
Loading…
Reference in New Issue