From 264abf4af1c56e37867e7fc1f812caf4b94fbd2d Mon Sep 17 00:00:00 2001 From: Andrew Kravchuk Date: Tue, 16 Jun 2020 19:03:50 +0300 Subject: [PATCH] Added processed event flag as a return value in allegro5 backend --- demo/allegro5/nuklear_allegro5.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/demo/allegro5/nuklear_allegro5.h b/demo/allegro5/nuklear_allegro5.h index 955902c..f697317 100644 --- a/demo/allegro5/nuklear_allegro5.h +++ b/demo/allegro5/nuklear_allegro5.h @@ -23,7 +23,7 @@ typedef struct NkAllegro5Font NkAllegro5Font; NK_API struct nk_context* nk_allegro5_init(NkAllegro5Font *font, ALLEGRO_DISPLAY *dsp, unsigned int width, unsigned int height); -NK_API void nk_allegro5_handle_event(ALLEGRO_EVENT *ev); +NK_API int nk_allegro5_handle_event(ALLEGRO_EVENT *ev); NK_API void nk_allegro5_shutdown(void); NK_API void nk_allegro5_render(void); @@ -306,7 +306,7 @@ nk_allegro5_render() nk_clear(&allegro5.ctx); } -NK_API void +NK_API int nk_allegro5_handle_event(ALLEGRO_EVENT *ev) { struct nk_context *ctx = &allegro5.ctx; @@ -315,12 +315,14 @@ nk_allegro5_handle_event(ALLEGRO_EVENT *ev) allegro5.width = (unsigned int)ev->display.width; allegro5.height = (unsigned int)ev->display.height; al_acknowledge_resize(ev->display.source); + return 1; } break; case ALLEGRO_EVENT_MOUSE_AXES: { nk_input_motion(ctx, ev->mouse.x, ev->mouse.y); if (ev->mouse.dz != 0) { nk_input_scroll(ctx, nk_vec2(0,(float)ev->mouse.dz / al_get_mouse_wheel_precision())); } + return 1; } break; case ALLEGRO_EVENT_MOUSE_BUTTON_DOWN: case ALLEGRO_EVENT_MOUSE_BUTTON_UP: { @@ -332,6 +334,7 @@ nk_allegro5_handle_event(ALLEGRO_EVENT *ev) button = NK_BUTTON_MIDDLE; } nk_input_button(ctx, button, ev->mouse.x, ev->mouse.y, ev->type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN); + return 1; } break; /* This essentially converts touch events to mouse events */ case ALLEGRO_EVENT_TOUCH_BEGIN: @@ -340,7 +343,7 @@ nk_allegro5_handle_event(ALLEGRO_EVENT *ev) would be manipulating multiple nuklear elements, as if there were multiple mouse cursors */ if (allegro5.is_touch_down && allegro5.touch_down_id != ev->touch.id) { - return; + return 0; } if (ev->type == ALLEGRO_EVENT_TOUCH_BEGIN) { allegro5.is_touch_down = 1; @@ -359,14 +362,16 @@ nk_allegro5_handle_event(ALLEGRO_EVENT *ev) allegro5.touch_down_id = -1; } nk_input_button(ctx, NK_BUTTON_LEFT, (int)ev->touch.x, (int)ev->touch.y, ev->type == ALLEGRO_EVENT_TOUCH_BEGIN); + return 1; } break; case ALLEGRO_EVENT_TOUCH_MOVE: { /* Only acknowledge movements of a single touch, we are simulating a mouse cursor */ if (!allegro5.is_touch_down || allegro5.touch_down_id != ev->touch.id) { - return; + return 0; } nk_input_motion(ctx, (int)ev->touch.x, (int)ev->touch.y); + return 1; } break; case ALLEGRO_EVENT_KEY_DOWN: case ALLEGRO_EVENT_KEY_UP: { @@ -392,6 +397,7 @@ nk_allegro5_handle_event(ALLEGRO_EVENT *ev) nk_input_key(ctx, NK_KEY_TEXT_END, down); nk_input_key(ctx, NK_KEY_SCROLL_END, down); } + return 1; } break; case ALLEGRO_EVENT_KEY_CHAR: { int kc = ev->keyboard.keycode; @@ -426,8 +432,9 @@ nk_allegro5_handle_event(ALLEGRO_EVENT *ev) nk_input_unicode(ctx, ev->keyboard.unichar); } } + return 1; } break; - default: break; + default: return 0; break; } }