X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fbutton.c;h=f0a8e1c8b58d17658fc39ea98fc7fc7e11512f21;hb=b9c029fdfbf54699ff0ebf2a64504ee40f6ec357;hp=fcd96ce857efdd116b1144beb15a72ce79c83d82;hpb=246f3981ea5e6dc3044cfb20c4d06be2787feb49;p=supertux.git diff --git a/src/button.c b/src/button.c index fcd96ce85..f0a8e1c8b 100644 --- a/src/button.c +++ b/src/button.c @@ -85,20 +85,7 @@ void button_free(button_type* pbutton) void button_event(button_type* pbutton, SDL_Event *event) { - if(event->type == SDL_KEYDOWN) - { - SDLKey key = event->key.keysym.sym; - if(key == pbutton->shortcut) - pbutton->state = BN_CLICKED; - } - else if(event->type == SDL_MOUSEMOTION) - { - - if(pbutton->show_info) - { - pbutton->show_info = NO; - } - } +SDLKey key = event->key.keysym.sym; if(event->motion.x > pbutton->x && event->motion.x < pbutton->x + pbutton->w && event->motion.y > pbutton->y && event->motion.y < pbutton->y + pbutton->h) @@ -126,7 +113,7 @@ void button_event(button_type* pbutton, SDL_Event *event) } } } - else + else if(event->type == SDL_MOUSEBUTTONDOWN || event->type == SDL_MOUSEBUTTONUP) { pbutton->state = -1; if(pbutton->show_info) @@ -134,6 +121,25 @@ void button_event(button_type* pbutton, SDL_Event *event) pbutton->show_info = NO; } } + + if(event->type == SDL_KEYDOWN) + { + if(key == pbutton->shortcut) + pbutton->state = BN_PRESSED; + } + else if(event->type == SDL_KEYUP) + { + if(pbutton->state == BN_PRESSED && key == pbutton->shortcut) + pbutton->state = BN_CLICKED; + } + else if(event->type == SDL_MOUSEMOTION) + { + + if(pbutton->show_info) + { + pbutton->show_info = NO; + } + } } int button_get_state(button_type* pbutton)