NewCreature / Allegro-Legacy

Make Your Allegro 4 Programs Run On Modern Systems Using Allegro 5
19 stars 3 forks source link

Fix emulation of mouse wheel z position #21

Closed connorjclark closed 2 years ago

connorjclark commented 2 years ago

I've noticed this behavior in an application using allegro-legacy: if you scroll the mouse wheel (any amount) without moving the mouse cursor everything seems to work as expected. But, when you stop scrolling and then just move your mouse, it seems the movement of the mouse emits additional wheel events in the same direction as the last wheel scroll.

I found that adding al_set_mouse_z(z); to position_mouse_z fixed the issue for me. the a4 program sets the z position to 0 after reading the value (to reset it), but the handling of ALLEGRO_EVENT_MOUSE_AXES (a5_mouse.c) undoes this because a5 state doesn't get updated.

connorjclark commented 2 years ago

If this is the right fix, I suppose the same thing should be done for position w.

NewCreature commented 2 years ago

Since the mouse driver system doesn't have functions for updating the mouse z and w position, we'll have to settle for updating these positions directly. Thanks for that fix.