From cde36cc0f268fb7077d7f14301fe38831f98b939 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sun, 22 Sep 2019 08:56:14 +1000 Subject: [PATCH] Don't keep track of mouse wheel position because we only ever care about the delta anyways --- src/Input.c | 5 +---- src/Input.h | 6 ++---- src/Widgets.c | 12 ++++++------ src/Widgets.h | 24 ++++++++++++------------ src/Window.c | 14 +++++++------- 5 files changed, 28 insertions(+), 33 deletions(-) diff --git a/src/Input.c b/src/Input.c index cac56dfd4..9ddf53362 100644 --- a/src/Input.c +++ b/src/Input.c @@ -125,7 +125,6 @@ void Key_Clear(void) { /*########################################################################################################################* *----------------------------------------------------------Mouse----------------------------------------------------------* *#########################################################################################################################*/ -float Mouse_Wheel; int Mouse_X, Mouse_Y; struct Pointer Pointers[INPUT_MAX_POINTERS]; bool Input_RawMode, Input_TouchMode; @@ -138,9 +137,7 @@ void Pointer_SetPressed(int idx, bool pressed) { } } -void Mouse_SetWheel(float wheel) { - float delta = wheel - Mouse_Wheel; - Mouse_Wheel = wheel; +void Mouse_ScrollWheel(float delta) { Event_RaiseFloat(&InputEvents.Wheel, delta); } diff --git a/src/Input.h b/src/Input.h index 19c2420bd..986a2c1a7 100644 --- a/src/Input.h +++ b/src/Input.h @@ -72,8 +72,6 @@ void Input_SetPressed(Key key, bool pressed); void Key_Clear(void); typedef int MouseButton; -/* Wheel position of the mouse. Use Mouse_SetWheel to change. */ -extern float Mouse_Wheel; /* Whether raw mouse/touch input is being listened for. */ extern bool Input_RawMode; /* Whether touch input is being used. */ @@ -98,8 +96,8 @@ extern int Mouse_X, Mouse_Y; /* Raises PointerEvents.Up or PointerEvents.Down. */ void Pointer_SetPressed(int idx, bool pressed); -/* Sets wheel position of the mouse, always raising InputEvents.Wheel. */ -void Mouse_SetWheel(float wheel); +/* Raises InputEvents.Wheel with the given wheel delta. */ +void Mouse_ScrollWheel(float delta); /* Sets X and Y position of the given pointer, always raising PointerEvents.Moved. */ void Pointer_SetPosition(int idx, int x, int y); diff --git a/src/Widgets.c b/src/Widgets.c index 457df51a0..e43a231bd 100644 --- a/src/Widgets.c +++ b/src/Widgets.c @@ -1248,7 +1248,7 @@ static void Hex_Default(struct MenuInputDesc* d, String* value) { PackedCol_ToHex(value, d->meta.h.Default); } -const struct MenuInputVTABLE HexValidator_VTABLE = { +const struct MenuInputVTABLE HexInput_VTABLE = { Hex_Range, Hex_ValidChar, Hex_ValidString, Hex_ValidValue, Hex_Default }; @@ -1275,7 +1275,7 @@ static void Int_Default(struct MenuInputDesc* d, String* value) { String_AppendInt(value, d->meta.i.Default); } -const struct MenuInputVTABLE IntValidator_VTABLE = { +const struct MenuInputVTABLE IntInput_VTABLE = { Int_Range, Int_ValidChar, Int_ValidString, Int_ValidValue, Int_Default }; @@ -1284,7 +1284,7 @@ static void Seed_Range(struct MenuInputDesc* d, String* range) { } static void Seed_NoDefault(struct MenuInputDesc* d, String* value) { } -const struct MenuInputVTABLE SeedValidator_VTABLE = { +const struct MenuInputVTABLE SeedInput_VTABLE = { Seed_Range, Int_ValidChar, Int_ValidString, Int_ValidValue, Seed_NoDefault }; @@ -1311,7 +1311,7 @@ static void Float_Default(struct MenuInputDesc* d, String* value) { String_AppendFloat(value, d->meta.f.Default, 3); } -const struct MenuInputVTABLE FloatValidator_VTABLE = { +const struct MenuInputVTABLE FloatInput_VTABLE = { Float_Range, Float_ValidChar, Float_ValidString, Float_ValidValue, Float_Default }; @@ -1325,7 +1325,7 @@ static bool Path_ValidChar(struct MenuInputDesc* d, char c) { } static bool Path_ValidString(struct MenuInputDesc* d, const String* s) { return true; } -const struct MenuInputVTABLE PathValidator_VTABLE = { +const struct MenuInputVTABLE PathInput_VTABLE = { Path_Range, Path_ValidChar, Path_ValidString, Path_ValidString, Seed_NoDefault }; @@ -1341,7 +1341,7 @@ static bool String_ValidString(struct MenuInputDesc* d, const String* s) { return s->length <= STRING_SIZE; } -const struct MenuInputVTABLE StringValidator_VTABLE = { +const struct MenuInputVTABLE StringInput_VTABLE = { String_Range, String_ValidChar, String_ValidString, String_ValidString, Seed_NoDefault }; diff --git a/src/Widgets.h b/src/Widgets.h index a3be9e2b0..383d18491 100644 --- a/src/Widgets.h +++ b/src/Widgets.h @@ -157,20 +157,20 @@ struct MenuInputDesc { } meta; }; -extern const struct MenuInputVTABLE HexValidator_VTABLE; -extern const struct MenuInputVTABLE IntValidator_VTABLE; -extern const struct MenuInputVTABLE SeedValidator_VTABLE; -extern const struct MenuInputVTABLE FloatValidator_VTABLE; -extern const struct MenuInputVTABLE PathValidator_VTABLE; -extern const struct MenuInputVTABLE StringValidator_VTABLE; +extern const struct MenuInputVTABLE HexInput_VTABLE; +extern const struct MenuInputVTABLE IntInput_VTABLE; +extern const struct MenuInputVTABLE SeedInput_VTABLE; +extern const struct MenuInputVTABLE FloatInput_VTABLE; +extern const struct MenuInputVTABLE PathInput_VTABLE; +extern const struct MenuInputVTABLE StringInput_VTABLE; -#define MenuInput_Hex(v, def) v.VTABLE = &HexValidator_VTABLE; v.meta.h.Default = def; -#define MenuInput_Int(v, lo, hi, def) v.VTABLE = &IntValidator_VTABLE; v.meta.i.Min = lo; v.meta.i.Max = hi; v.meta.i.Default = def; -#define MenuInput_Seed(v) v.VTABLE = &SeedValidator_VTABLE; v.meta.i.Min = Int32_MinValue; v.meta.i.Max = Int32_MaxValue; -#define MenuInput_Float(v, lo, hi, def) v.VTABLE = &FloatValidator_VTABLE; v.meta.f.Min = lo; v.meta.f.Max = hi; v.meta.f.Default = def; -#define MenuInput_Path(v) v.VTABLE = &PathValidator_VTABLE; +#define MenuInput_Hex(v, def) v.VTABLE = &HexInput_VTABLE; v.meta.h.Default = def; +#define MenuInput_Int(v, lo, hi, def) v.VTABLE = &IntInput_VTABLE; v.meta.i.Min = lo; v.meta.i.Max = hi; v.meta.i.Default = def; +#define MenuInput_Seed(v) v.VTABLE = &SeedInput_VTABLE; v.meta.i.Min = Int32_MinValue; v.meta.i.Max = Int32_MaxValue; +#define MenuInput_Float(v, lo, hi, def) v.VTABLE = &FloatInput_VTABLE; v.meta.f.Min = lo; v.meta.f.Max = hi; v.meta.f.Default = def; +#define MenuInput_Path(v) v.VTABLE = &PathInput_VTABLE; #define MenuInput_Enum(v, names, count) v.VTABLE = NULL; v.meta.e.Names = names; v.meta.e.Count = count; -#define MenuInput_String(v) v.VTABLE = &StringValidator_VTABLE; +#define MenuInput_String(v) v.VTABLE = &StringInput_VTABLE; struct MenuInputWidget { struct InputWidget base; diff --git a/src/Window.c b/src/Window.c index 6bf77af6b..4078bbbfc 100644 --- a/src/Window.c +++ b/src/Window.c @@ -222,7 +222,7 @@ static LRESULT CALLBACK Window_Procedure(HWND handle, UINT message, WPARAM wPara case WM_MOUSEWHEEL: wheelDelta = ((short)HIWORD(wParam)) / (float)WHEEL_DELTA; - Mouse_SetWheel(Mouse_Wheel + wheelDelta); + Mouse_ScrollWheel(wheelDelta); return 0; case WM_LBUTTONDOWN: @@ -1104,8 +1104,8 @@ void Window_ProcessEvents(void) { if (e.xbutton.button == 1) Input_SetPressed(KEY_LMOUSE, true); else if (e.xbutton.button == 2) Input_SetPressed(KEY_MMOUSE, true); else if (e.xbutton.button == 3) Input_SetPressed(KEY_RMOUSE, true); - else if (e.xbutton.button == 4) Mouse_SetWheel(Mouse_Wheel + 1); - else if (e.xbutton.button == 5) Mouse_SetWheel(Mouse_Wheel - 1); + else if (e.xbutton.button == 4) Mouse_ScrollWheel(+1); + else if (e.xbutton.button == 5) Mouse_ScrollWheel(-1); else if (e.xbutton.button == 6) Input_SetPressed(KEY_XBUTTON1, true); else if (e.xbutton.button == 7) Input_SetPressed(KEY_XBUTTON2, true); break; @@ -1931,7 +1931,7 @@ static OSStatus Window_ProcessMouseEvent(EventRef inEvent) { res = GetEventParameter(inEvent, kEventParamMouseWheelDelta, typeSInt32, NULL, sizeof(SInt32), NULL, &delta); if (res) Logger_Abort2(res, "Getting mouse wheel delta"); - Mouse_SetWheel(Mouse_Wheel + delta); + Mouse_ScrollWheel(delta); return 0; case kEventMouseMoved: @@ -2620,7 +2620,7 @@ void Window_ProcessEvents(void) { case SDL_MOUSEBUTTONUP: Window_HandleMouseEvent(&e); break; case SDL_MOUSEWHEEL: - Mouse_SetWheel(Mouse_Wheel + e.wheel.y); + Mouse_ScrollWheel(e.wheel.y); break; case SDL_MOUSEMOTION: Pointer_SetPosition(0, e.motion.x, e.motion.y); @@ -2767,7 +2767,7 @@ static void Window_CorrectFocus(void) { static EM_BOOL Window_MouseWheel(int type, const EmscriptenWheelEvent* ev, void* data) { /* TODO: The scale factor isn't standardised.. is there a better way though? */ - Mouse_SetWheel(Mouse_Wheel - Math_Sign(ev->deltaY)); + Mouse_ScrollWheel(-Math_Sign(ev->deltaY)); Window_CorrectFocus(); return true; } @@ -3813,7 +3813,7 @@ void Window_ProcessEvents(void) { break; case 22: /* NSScrollWheel */ - Mouse_SetWheel(Mouse_Wheel + Send_CGFloat(ev, sel_registerName("deltaY"))); + Mouse_ScrollWheel(Send_CGFloat(ev, sel_registerName("deltaY"))); break; case 5: /* NSMouseMoved */