diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index 75a1a9046d..5712eb86f5 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -3970,14 +3970,19 @@ begin LastMouse.WinControl := LCLObject; LastMouse.WinHandle := TLCLIntfHandle(Self); LastMouse.MousePos := Point(MousePos.X, MousePos.Y); - - Msg.Msg := LM_MOUSEWHEEL; Msg.X := SmallInt(MousePos.X); Msg.Y := SmallInt(MousePos.Y); Msg.WheelDelta := SmallInt(QWheelEvent_delta(QWheelEventH(Event))); + Msg.Msg := LM_MOUSEWHEEL; + if QWheelEvent_orientation(QWheelEventH(Event)) = QtHorizontal then + begin + Msg.Msg := LM_MOUSEHWHEEL; + Msg.WheelDelta := -Msg.WheelDelta; + end; + {$IFDEF DARWIN} // LCL expects delta +-120, we must fix it. issue #20888 if (ChildOfComplexWidget in [ccwCustomControl, ccwAbstractScrollArea, diff --git a/lcl/interfaces/qt5/qtwidgets.pas b/lcl/interfaces/qt5/qtwidgets.pas index 87e76ab0ea..5476799579 100644 --- a/lcl/interfaces/qt5/qtwidgets.pas +++ b/lcl/interfaces/qt5/qtwidgets.pas @@ -3892,14 +3892,19 @@ begin LastMouse.WinControl := LCLObject; LastMouse.WinHandle := TLCLIntfHandle(Self); LastMouse.MousePos := Point(MousePos.X, MousePos.Y); - - Msg.Msg := LM_MOUSEWHEEL; Msg.X := SmallInt(MousePos.X); Msg.Y := SmallInt(MousePos.Y); Msg.WheelDelta := SmallInt(QWheelEvent_delta(QWheelEventH(Event))); + Msg.Msg := LM_MOUSEWHEEL; + if QWheelEvent_orientation(QWheelEventH(Event)) = QtHorizontal then + begin + Msg.Msg := LM_MOUSEHWHEEL; + Msg.WheelDelta := -Msg.WheelDelta; + end; + {$IFDEF DARWIN} // LCL expects delta +-120, we must fix it. issue #20888 if (ChildOfComplexWidget in [ccwCustomControl, ccwAbstractScrollArea,