Skip to content

Commit 120bb81

Browse files
authored
bugfix(input): Fix touchpad upward scrolling in UI list boxes (#2586)
1 parent 6317722 commit 120bb81

7 files changed

Lines changed: 10 additions & 9 deletions

File tree

Core/GameEngine/Source/GameClient/Input/Mouse.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,7 +824,8 @@ void Mouse::createStreamMessages()
824824
{
825825
msg = TheMessageStream->appendMessage( GameMessage::MSG_RAW_MOUSE_WHEEL );
826826
msg->appendPixelArgument( m_currMouse.pos );
827-
msg->appendIntegerArgument( m_currMouse.wheelPos / 120 ); // wheel delta
827+
// TheSuperHackers @bugfix Use float wheel delta to preserve fractional values from touchpad input
828+
msg->appendRealArgument( m_currMouse.wheelPos / (Real)MOUSE_WHEEL_DELTA );
828829
msg->appendIntegerArgument( TheKeyboard->getModifierFlags() );
829830
}
830831

Generals/Code/GameEngine/Include/Common/MessageStream.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ class GameMessage : public MemoryPoolObject
131131
MSG_RAW_MOUSE_RIGHT_DOUBLE_CLICK, ///< (pixel, modifiers, time)
132132
MSG_RAW_MOUSE_RIGHT_BUTTON_UP, ///< (pixel, modifiers, time)
133133
MSG_RAW_MOUSE_RIGHT_DRAG, ///< drag of the mouse with a button held down
134-
MSG_RAW_MOUSE_WHEEL, ///< (Int spin, + is away, - is toward user)
134+
MSG_RAW_MOUSE_WHEEL, ///< (Real spin, + is away, - is toward user)
135135
MSG_RAW_MOUSE_END,
136136

137137
MSG_RAW_KEY_DOWN, ///< (KeyDefType) the given key was pressed (uses Microsoft VK_ codes)

Generals/Code/GameEngine/Source/GameClient/MessageStream/LookAtXlat.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
416416
{
417417
m_lastMouseMoveTimeMsec = timeGetTime();
418418

419-
const Int spin = msg->getArgument( 1 )->integer;
419+
const Real spin = msg->getArgument( 1 )->real;
420420
const Real zoom = -spin * View::ZoomHeightPerSecond;
421421
TheTacticalView->userZoom(zoom);
422422

Generals/Code/GameEngine/Source/GameClient/MessageStream/WindowXlat.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ static GameWindowMessage rawMouseToWindowMessage( const GameMessage *msg )
135135

136136
// ------------------------------------------------------------------------
137137
case GameMessage::MSG_RAW_MOUSE_WHEEL:
138-
if( msg->getArgument( 1 )->integer > 0 )
138+
if( msg->getArgument( 1 )->real > 0 )
139139
gwm = GWM_WHEEL_UP;
140140
else
141141
gwm = GWM_WHEEL_DOWN;
@@ -266,7 +266,7 @@ GameMessageDisposition WindowTranslator::translateGameMessage(const GameMessage
266266
ICoord2D mousePos = msg->getArgument( 0 )->pixel;
267267

268268
// get wheel position
269-
Int wheelPos = msg->getArgument( 1 )->integer;
269+
Real wheelPos = msg->getArgument( 1 )->real;
270270

271271
// process wheel event
272272
GameWindowMessage gwm = rawMouseToWindowMessage( msg );

GeneralsMD/Code/GameEngine/Include/Common/MessageStream.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ class GameMessage : public MemoryPoolObject
131131
MSG_RAW_MOUSE_RIGHT_DOUBLE_CLICK, ///< (pixel, modifiers, time)
132132
MSG_RAW_MOUSE_RIGHT_BUTTON_UP, ///< (pixel, modifiers, time)
133133
MSG_RAW_MOUSE_RIGHT_DRAG, ///< drag of the mouse with a button held down
134-
MSG_RAW_MOUSE_WHEEL, ///< (Int spin, + is away, - is toward user)
134+
MSG_RAW_MOUSE_WHEEL, ///< (Real spin, + is away, - is toward user)
135135
MSG_RAW_MOUSE_END,
136136

137137
MSG_RAW_KEY_DOWN, ///< (KeyDefType) the given key was pressed (uses Microsoft VK_ codes)

GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/LookAtXlat.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
415415
{
416416
m_lastMouseMoveTimeMsec = timeGetTime();
417417

418-
const Int spin = msg->getArgument( 1 )->integer;
418+
const Real spin = msg->getArgument( 1 )->real;
419419
const Real zoom = -spin * View::ZoomHeightPerSecond;
420420
TheTacticalView->userZoom(zoom);
421421

GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/WindowXlat.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ static GameWindowMessage rawMouseToWindowMessage( const GameMessage *msg )
135135

136136
// ------------------------------------------------------------------------
137137
case GameMessage::MSG_RAW_MOUSE_WHEEL:
138-
if( msg->getArgument( 1 )->integer > 0 )
138+
if( msg->getArgument( 1 )->real > 0 )
139139
gwm = GWM_WHEEL_UP;
140140
else
141141
gwm = GWM_WHEEL_DOWN;
@@ -284,7 +284,7 @@ GameMessageDisposition WindowTranslator::translateGameMessage(const GameMessage
284284
ICoord2D mousePos = msg->getArgument( 0 )->pixel;
285285

286286
// get wheel position
287-
Int wheelPos = msg->getArgument( 1 )->integer;
287+
Real wheelPos = msg->getArgument( 1 )->real;
288288

289289
// process wheel event
290290
GameWindowMessage gwm = rawMouseToWindowMessage( msg );

0 commit comments

Comments
 (0)