[Fix] No-one knew it, but input for toolkit was buggy. Seperated toolkit input from game input to fix this.
This commit is contained in:
parent
ddadb068fe
commit
fb57dde3ed
11
src/input.c
11
src/input.c
@ -298,6 +298,11 @@ static void input_keyup(SDLKey key) {
|
||||
|
||||
// Just seperates the event types.
|
||||
void input_handle(SDL_Event* event) {
|
||||
if(toolkit) {
|
||||
// Toolkit is handled seperately.
|
||||
toolkit_input(event);
|
||||
return;
|
||||
}
|
||||
switch(event->type) {
|
||||
case SDL_JOYAXISMOTION:
|
||||
input_joyaxis(event->jaxis.axis, event->jaxis.value);
|
||||
@ -314,12 +319,6 @@ void input_handle(SDL_Event* event) {
|
||||
case SDL_KEYUP:
|
||||
input_keyup(event->key.keysym.sym);
|
||||
break;
|
||||
// Toolkit.
|
||||
case SDL_MOUSEMOTION:
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
if(toolkit) toolkit_mouseEvent(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,6 +75,8 @@ static int mwindows = 0;
|
||||
static Widget* window_newWidget(Window* w);
|
||||
static void widget_cleanup(Widget* widget);
|
||||
static Window* window_wget(const unsigned int wid);
|
||||
// Input.
|
||||
static void toolkit_mouseEvent(SDL_Event* event);
|
||||
// Render.
|
||||
static void window_render(Window* w);
|
||||
static void toolkit_renderButton(Widget* btn, double bx, double by);
|
||||
@ -502,6 +504,7 @@ static void window_render(Window* w) {
|
||||
}
|
||||
}
|
||||
|
||||
// Renders a button.
|
||||
static void toolkit_renderButton(Widget* btn, double bx, double by) {
|
||||
glColour* c, *dc, *oc, *lc;
|
||||
double x, y;
|
||||
@ -670,9 +673,19 @@ void toolkit_render(void) {
|
||||
|
||||
}
|
||||
|
||||
void toolkit_input(SDL_Event* event) {
|
||||
switch(event->type) {
|
||||
case SDL_MOUSEMOTION:
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
toolkit_mouseEvent(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Input.
|
||||
static int mouse_down = 0;
|
||||
void toolkit_mouseEvent(SDL_Event* event) {
|
||||
static void toolkit_mouseEvent(SDL_Event* event) {
|
||||
int i;
|
||||
double x, y;
|
||||
Window* w;
|
||||
|
@ -31,7 +31,7 @@ void window_destroyWidget(unsigned wid, const char* wgtname);
|
||||
void toolkit_render(void);
|
||||
|
||||
// Input.
|
||||
void toolkit_mouseEvent(SDL_Event* event);
|
||||
void toolkit_input(SDL_Event* event);
|
||||
|
||||
// Init/Exit.
|
||||
int toolkit_init(void);
|
||||
|
Loading…
Reference in New Issue
Block a user