void wndmgr_hangle_event(Event e) { if(e.type == ET_MouseDown) { if(point_in_rect(e.loc, plusbtn->frame)) { plusbtn->mouse_down(plusbtn, e); } else { window_sref clicked_wnd = _wndmgr_find_clicked(e); if(!clicked_wnd) return; _wndmgr_keywnd = clicked_wnd->wnd; wndmgr_order_front(_wndmgr_keywnd); window_handle_event(_wndmgr_keywnd, e); } } else { if(_wndmgr_keywnd) { window_handle_event(_wndmgr_keywnd, e); } if(e.type == ET_MouseUp) { _wndmgr_keywnd = NULL; } } }
static void process_input() { SDL_Event e; while (SDL_PollEvent(&e)) { /* user requests quit */ if (e.type == SDL_QUIT) { run = 0; } else if (e.type == SDL_KEYDOWN) { switch (e.key.keysym.sym) { case SDLK_UP: g_player->up = 1; break; case SDLK_DOWN: g_player->down = 1; break; default: break; } } else if (e.type == SDL_KEYUP) { switch (e.key.keysym.sym) { case SDLK_UP: g_player->up = 0; break; case SDLK_DOWN: g_player->down = 0; break; default: break; } } /* handle window events */ window_handle_event(g_window, &e); } }