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 }