Kaydet (Commit) 9255b5e1 authored tarafından Herbert Dürr's avatar Herbert Dürr

#i124191# fix horizontal scroll events on Mac

A problem with horizontal scrolling was reported on Mac. Reviewing the relevant
code identified some problems. The patch to fix them was confirmed to also fix
the reported problem.

Found-by: erben.fr@gmail.com
Tested-by: cemonadresse@orange.fr
Tested-by: TrolliusX@t-online.de
Tested-by: thorsten.wagner.4@gmail.com
üst a9b9ceff
...@@ -803,8 +803,8 @@ private: ...@@ -803,8 +803,8 @@ private:
mpFrame->mnLastModifierFlags = [pEvent modifierFlags]; mpFrame->mnLastModifierFlags = [pEvent modifierFlags];
// merge pending scroll wheel events // merge pending scroll wheel events
float dX = 0.0; CGFloat dX = 0.0;
float dY = 0.0; CGFloat dY = 0.0;
for(;;) for(;;)
{ {
dX += [pEvent deltaX]; dX += [pEvent deltaX];
...@@ -833,7 +833,7 @@ private: ...@@ -833,7 +833,7 @@ private:
if( dX != 0.0 ) if( dX != 0.0 )
{ {
aEvent.mnDelta = static_cast<long>(floor(dX)); aEvent.mnDelta = static_cast<long>(floor(dX));
aEvent.mnNotchDelta = dX < 0 ? -1 : 1; aEvent.mnNotchDelta = (dX < 0) ? -1 : +1;
if( aEvent.mnDelta == 0 ) if( aEvent.mnDelta == 0 )
aEvent.mnDelta = aEvent.mnNotchDelta; aEvent.mnDelta = aEvent.mnNotchDelta;
aEvent.mbHorz = TRUE; aEvent.mbHorz = TRUE;
...@@ -843,7 +843,7 @@ private: ...@@ -843,7 +843,7 @@ private:
if( dY != 0.0 && AquaSalFrame::isAlive( mpFrame )) if( dY != 0.0 && AquaSalFrame::isAlive( mpFrame ))
{ {
aEvent.mnDelta = static_cast<long>(floor(dY)); aEvent.mnDelta = static_cast<long>(floor(dY));
aEvent.mnNotchDelta = dY < 0 ? -1 : 1; aEvent.mnNotchDelta = (dY < 0) ? -1 : +1;
if( aEvent.mnDelta == 0 ) if( aEvent.mnDelta == 0 )
aEvent.mnDelta = aEvent.mnNotchDelta; aEvent.mnDelta = aEvent.mnNotchDelta;
aEvent.mbHorz = FALSE; aEvent.mbHorz = FALSE;
...@@ -863,8 +863,8 @@ private: ...@@ -863,8 +863,8 @@ private:
mpFrame->mnLastModifierFlags = [pEvent modifierFlags]; mpFrame->mnLastModifierFlags = [pEvent modifierFlags];
// merge pending scroll wheel events // merge pending scroll wheel events
float dX = 0.0; CGFloat dX = 0.0;
float dY = 0.0; CGFloat dY = 0.0;
for(;;) for(;;)
{ {
dX += [pEvent deltaX]; dX += [pEvent deltaX];
...@@ -893,11 +893,11 @@ private: ...@@ -893,11 +893,11 @@ private:
if( dX != 0.0 ) if( dX != 0.0 )
{ {
aEvent.mnDelta = static_cast<long>(floor(dX)); aEvent.mnDelta = static_cast<long>(floor(dX));
aEvent.mnNotchDelta = dX < 0 ? -1 : 1; aEvent.mnNotchDelta = (dX < 0) ? -1 : +1;
if( aEvent.mnDelta == 0 ) if( aEvent.mnDelta == 0 )
aEvent.mnDelta = aEvent.mnNotchDelta; aEvent.mnDelta = aEvent.mnNotchDelta;
aEvent.mbHorz = TRUE; aEvent.mbHorz = TRUE;
aEvent.mnScrollLines = dY > 0 ? dX/WHEEL_EVENT_FACTOR : -dX/WHEEL_EVENT_FACTOR; aEvent.mnScrollLines = (dX > 0) ? +dX/WHEEL_EVENT_FACTOR : -dX/WHEEL_EVENT_FACTOR;
if( aEvent.mnScrollLines == 0 ) if( aEvent.mnScrollLines == 0 )
aEvent.mnScrollLines = 1; aEvent.mnScrollLines = 1;
...@@ -906,11 +906,11 @@ private: ...@@ -906,11 +906,11 @@ private:
if( dY != 0.0 && AquaSalFrame::isAlive( mpFrame ) ) if( dY != 0.0 && AquaSalFrame::isAlive( mpFrame ) )
{ {
aEvent.mnDelta = static_cast<long>(floor(dY)); aEvent.mnDelta = static_cast<long>(floor(dY));
aEvent.mnNotchDelta = dY < 0 ? -1 : 1; aEvent.mnNotchDelta = (dY < 0) ? -1 : +1;
if( aEvent.mnDelta == 0 ) if( aEvent.mnDelta == 0 )
aEvent.mnDelta = aEvent.mnNotchDelta; aEvent.mnDelta = aEvent.mnNotchDelta;
aEvent.mbHorz = FALSE; aEvent.mbHorz = FALSE;
aEvent.mnScrollLines = dY > 0 ? dY/WHEEL_EVENT_FACTOR : -dY/WHEEL_EVENT_FACTOR; aEvent.mnScrollLines = (dY > 0) ? +dY/WHEEL_EVENT_FACTOR : -dY/WHEEL_EVENT_FACTOR;
if( aEvent.mnScrollLines < 1 ) if( aEvent.mnScrollLines < 1 )
aEvent.mnScrollLines = 1; aEvent.mnScrollLines = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment