FLoating point scroll wheel support added.

creator-widgets
Elliott Liggett 2024-02-10 13:44:23 -08:00
rodzic a1ef2a99d3
commit a35155d418
2 zmienionych plików z 29 dodań i 2 usunięć

Wyświetl plik

@ -536,8 +536,29 @@ void freqCtrl::wheelEvent(QWheelEvent *event)
QPointF pt = event->position();
#endif
int delta = m_InvertScrolling ? -event->angleDelta().y() : event->angleDelta().y();
int numDegrees = delta / 8;
int numSteps = numDegrees / 15;
qreal numDegrees = delta / 8;
qreal offset = numDegrees / 15;
qreal stepsToScroll = QApplication::wheelScrollLines() * offset;
if( (scrollWheelOffsetAccumulated > 0) && (offset > 0) ) {
scrollWheelOffsetAccumulated += stepsToScroll;
} else if ((scrollWheelOffsetAccumulated < 0) && (offset < 0)) {
scrollWheelOffsetAccumulated += stepsToScroll;
} else {
// Changed direction, zap the old accumulation:
scrollWheelOffsetAccumulated = stepsToScroll;
//qInfo() << "Scroll changed direction";
}
int numSteps = int(scrollWheelOffsetAccumulated);
if(!numSteps) {
// we have not accumulated enough for a complete step.
// come back later.
return;
}
for (int i = m_DigStart; i < m_NumDigits; i++)
{
@ -549,6 +570,7 @@ void freqCtrl::wheelEvent(QWheelEvent *event)
decFreq();
}
}
scrollWheelOffsetAccumulated = 0;
}
void freqCtrl::keyPressEvent(QKeyEvent *event)

Wyświetl plik

@ -9,6 +9,7 @@
#include <QFrame>
#include <QImage>
#include <QtGui>
#include <QApplication>
enum FctlUnit {
FCTL_UNIT_NONE, // Freq displayed without unit: 14.236.000
@ -110,6 +111,10 @@ private:
int m_DecPos;
int m_NumSeps;
int scrollYperClick = 24;
int scrollXperClick = 24;
qreal scrollWheelOffsetAccumulated=0;
qint64 m_MinStep;
qint64 m_freq;
qint64 m_Oldfreq;