File indexing completed on 2024-04-28 09:46:52
0001 /* 0002 SPDX-FileCopyrightText: 2015 Lindsay Roberts <os@lindsayr.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "ScrollState.h" 0008 0009 #include <QWheelEvent> 0010 0011 using namespace Konsole; 0012 0013 void ScrollState::addWheelEvent(const QWheelEvent *wheel) 0014 { 0015 if ((wheel->angleDelta().y() != 0) && (wheel->pixelDelta().y() == 0)) { 0016 _remainingScrollPixel = 0; 0017 } else { 0018 _remainingScrollPixel += wheel->pixelDelta().y(); 0019 } 0020 _remainingScrollAngle += wheel->angleDelta().y(); 0021 } 0022 0023 void ScrollState::clearAll() 0024 { 0025 _remainingScrollPixel = 0; 0026 _remainingScrollAngle = 0; 0027 } 0028 0029 int ScrollState::consumeLegacySteps(int stepsize) 0030 { 0031 if (stepsize < 1) { 0032 stepsize = DEFAULT_ANGLE_SCROLL_LINE; 0033 } 0034 const int steps = _remainingScrollAngle / stepsize; 0035 _remainingScrollAngle -= steps * stepsize; 0036 if (steps != 0) { 0037 _remainingScrollPixel = 0; 0038 } 0039 return steps; 0040 } 0041 0042 int ScrollState::consumeSteps(int pixelStepSize, int angleStepSize) 0043 { 0044 if (_remainingScrollPixel != 0) { 0045 int steps = _remainingScrollPixel / pixelStepSize; 0046 _remainingScrollPixel -= steps * pixelStepSize; 0047 _remainingScrollAngle = 0; 0048 return steps; 0049 } 0050 int steps = _remainingScrollAngle / angleStepSize; 0051 _remainingScrollAngle -= steps * angleStepSize; 0052 _remainingScrollPixel = 0; 0053 return steps; 0054 }