diff --git a/src/drivers/Qt/ConsoleDebugger.cpp b/src/drivers/Qt/ConsoleDebugger.cpp index ddb28ba1..48629dff 100644 --- a/src/drivers/Qt/ConsoleDebugger.cpp +++ b/src/drivers/Qt/ConsoleDebugger.cpp @@ -2837,6 +2837,8 @@ QAsmView::QAsmView(QWidget *parent) selAddrValue = -1; memset( selAddrText, 0, sizeof(selAddrText) ); + wheelPixelCounter = 0; + //setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Expanding ); setFocusPolicy(Qt::StrongFocus); @@ -3251,6 +3253,8 @@ void QAsmView::mousePressEvent(QMouseEvent * event) line = lineOffset + c.y(); + //printf("Mouse Button Pressed: 0x%x (%i,%i)\n", event->button(), c.x(), c.y() ); + if ( event->button() == Qt::LeftButton ) { //printf("Left Button Pressed: (%i,%i)\n", c.x(), c.y() ); @@ -3399,6 +3403,54 @@ void QAsmView::mousePressEvent(QMouseEvent * event) } } //---------------------------------------------------------------------------- +void QAsmView::wheelEvent(QWheelEvent *event) +{ + + QPoint numPixels = event->pixelDelta(); + QPoint numDegrees = event->angleDelta(); + + if (!numPixels.isNull()) + { + wheelPixelCounter += numPixels.y(); + //printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() ); + } + else if (!numDegrees.isNull()) + { + //QPoint numSteps = numDegrees / 15; + //printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() ); + //printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing ); + wheelPixelCounter += (pxLineSpacing * numDegrees.y()) / (15*8); + } + //printf("Wheel Event: %i\n", wheelPixelCounter); + + if ( wheelPixelCounter >= pxLineSpacing ) + { + lineOffset += (wheelPixelCounter / pxLineSpacing); + + if ( lineOffset > maxLineOffset ) + { + lineOffset = maxLineOffset; + } + vbar->setValue( lineOffset ); + + wheelPixelCounter = wheelPixelCounter % pxLineSpacing; + } + else if ( wheelPixelCounter <= -pxLineSpacing ) + { + lineOffset += (wheelPixelCounter / pxLineSpacing); + + if ( lineOffset < 0 ) + { + lineOffset = 0; + } + vbar->setValue( lineOffset ); + + wheelPixelCounter = wheelPixelCounter % pxLineSpacing; + } + + event->accept(); +} +//---------------------------------------------------------------------------- void QAsmView::contextMenuEvent(QContextMenuEvent *event) { int line; diff --git a/src/drivers/Qt/ConsoleDebugger.h b/src/drivers/Qt/ConsoleDebugger.h index f8b51a07..e35e1c03 100644 --- a/src/drivers/Qt/ConsoleDebugger.h +++ b/src/drivers/Qt/ConsoleDebugger.h @@ -120,6 +120,7 @@ class QAsmView : public QWidget void mouseReleaseEvent(QMouseEvent * event); void mouseMoveEvent(QMouseEvent * event); void resizeEvent(QResizeEvent *event); + void wheelEvent(QWheelEvent *event); void contextMenuEvent(QContextMenuEvent *event); void loadHighlightToClipboard(void); @@ -167,6 +168,8 @@ class QAsmView : public QWidget int txtHlgtEndChar; int txtHlgtEndLine; + int wheelPixelCounter; + dbg_asm_entry_t *asmPC; std::vector asmEntry; diff --git a/src/drivers/Qt/HexEditor.cpp b/src/drivers/Qt/HexEditor.cpp index dd34f970..2e6eb740 100644 --- a/src/drivers/Qt/HexEditor.cpp +++ b/src/drivers/Qt/HexEditor.cpp @@ -1225,6 +1225,8 @@ QHexEdit::QHexEdit(QWidget *parent) frzRamMode = 0; frzIdx = 0; + wheelPixelCounter = 0; + highLightColor[ 0].setRgb( 0x00, 0x00, 0x00 ); highLightColor[ 1].setRgb( 0x35, 0x40, 0x00 ); highLightColor[ 2].setRgb( 0x18, 0x52, 0x18 ); @@ -1777,6 +1779,54 @@ void QHexEdit::mousePressEvent(QMouseEvent * event) } //---------------------------------------------------------------------------- +void QHexEdit::wheelEvent(QWheelEvent *event) +{ + + QPoint numPixels = event->pixelDelta(); + QPoint numDegrees = event->angleDelta(); + + if (!numPixels.isNull()) + { + wheelPixelCounter += numPixels.y(); + //printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() ); + } + else if (!numDegrees.isNull()) + { + //QPoint numSteps = numDegrees / 15; + //printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() ); + //printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing ); + wheelPixelCounter += (pxLineSpacing * numDegrees.y()) / (15*8); + } + //printf("Wheel Event: %i\n", wheelPixelCounter); + + if ( wheelPixelCounter >= pxLineSpacing ) + { + lineOffset += (wheelPixelCounter / pxLineSpacing); + + if ( lineOffset > maxLineOffset ) + { + lineOffset = maxLineOffset; + } + vbar->setValue( lineOffset ); + + wheelPixelCounter = wheelPixelCounter % pxLineSpacing; + } + else if ( wheelPixelCounter <= -pxLineSpacing ) + { + lineOffset += (wheelPixelCounter / pxLineSpacing); + + if ( lineOffset < 0 ) + { + lineOffset = 0; + } + vbar->setValue( lineOffset ); + + wheelPixelCounter = wheelPixelCounter % pxLineSpacing; + } + + event->accept(); +} +//---------------------------------------------------------------------------- void QHexEdit::contextMenuEvent(QContextMenuEvent *event) { QAction *act; diff --git a/src/drivers/Qt/HexEditor.h b/src/drivers/Qt/HexEditor.h index 13c0ac57..9aaac033 100644 --- a/src/drivers/Qt/HexEditor.h +++ b/src/drivers/Qt/HexEditor.h @@ -130,6 +130,7 @@ class QHexEdit : public QWidget void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); void mousePressEvent(QMouseEvent * event); + void wheelEvent(QWheelEvent *event); void resizeEvent(QResizeEvent *event); void contextMenuEvent(QContextMenuEvent *event); @@ -185,6 +186,7 @@ class QHexEdit : public QWidget int frzRamVal; int frzRamMode; int frzIdx; + int wheelPixelCounter; bool cursorBlink; bool reverseVideo; diff --git a/src/drivers/Qt/RamSearch.cpp b/src/drivers/Qt/RamSearch.cpp index ed0fc097..815cd252 100644 --- a/src/drivers/Qt/RamSearch.cpp +++ b/src/drivers/Qt/RamSearch.cpp @@ -1507,6 +1507,8 @@ QRamSearchView::QRamSearchView(QWidget *parent) selAddr = -1; selLine = -1; + wheelPixelCounter = 0; + setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Expanding ); setFocusPolicy(Qt::StrongFocus); } @@ -1663,6 +1665,54 @@ void QRamSearchView::mousePressEvent(QMouseEvent * event) } } //---------------------------------------------------------------------------- +void QRamSearchView::wheelEvent(QWheelEvent *event) +{ + + QPoint numPixels = event->pixelDelta(); + QPoint numDegrees = event->angleDelta(); + + if (!numPixels.isNull()) + { + wheelPixelCounter += numPixels.y(); + //printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() ); + } + else if (!numDegrees.isNull()) + { + //QPoint numSteps = numDegrees / 15; + //printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() ); + //printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing ); + wheelPixelCounter += (pxLineSpacing * numDegrees.y()) / (15*8); + } + //printf("Wheel Event: %i\n", wheelPixelCounter); + + if ( wheelPixelCounter >= pxLineSpacing ) + { + lineOffset += (wheelPixelCounter / pxLineSpacing); + + if ( lineOffset > maxLineOffset ) + { + lineOffset = maxLineOffset; + } + vbar->setValue( lineOffset ); + + wheelPixelCounter = wheelPixelCounter % pxLineSpacing; + } + else if ( wheelPixelCounter <= -pxLineSpacing ) + { + lineOffset += (wheelPixelCounter / pxLineSpacing); + + if ( lineOffset < 0 ) + { + lineOffset = 0; + } + vbar->setValue( lineOffset ); + + wheelPixelCounter = wheelPixelCounter % pxLineSpacing; + } + + event->accept(); +} +//---------------------------------------------------------------------------- void QRamSearchView::paintEvent(QPaintEvent *event) { int i,x,y,row,nrow; diff --git a/src/drivers/Qt/RamSearch.h b/src/drivers/Qt/RamSearch.h index ed2c0ce5..a9f24f9e 100644 --- a/src/drivers/Qt/RamSearch.h +++ b/src/drivers/Qt/RamSearch.h @@ -36,6 +36,7 @@ class QRamSearchView : public QWidget //void keyReleaseEvent(QKeyEvent *event); void mousePressEvent(QMouseEvent * event); void resizeEvent(QResizeEvent *event); + void wheelEvent(QWheelEvent *event); int convPixToLine( QPoint p ); void calcFontData(void); @@ -59,6 +60,7 @@ class QRamSearchView : public QWidget int viewHeight; int selAddr; int selLine; + int wheelPixelCounter; }; class RamSearchDialog_t : public QDialog diff --git a/src/drivers/Qt/TraceLogger.cpp b/src/drivers/Qt/TraceLogger.cpp index 35cfde01..3017327b 100644 --- a/src/drivers/Qt/TraceLogger.cpp +++ b/src/drivers/Qt/TraceLogger.cpp @@ -1094,6 +1094,8 @@ QTraceLogView::QTraceLogView(QWidget *parent) vbar = NULL; hbar = NULL; + + wheelPixelCounter = 0; } //---------------------------------------------------- QTraceLogView::~QTraceLogView(void) @@ -1124,6 +1126,57 @@ void QTraceLogView::setScrollBars( QScrollBar *h, QScrollBar *v ) hbar = h; vbar = v; } //---------------------------------------------------- +void QTraceLogView::wheelEvent(QWheelEvent *event) +{ + int lineOffset; + + QPoint numPixels = event->pixelDelta(); + QPoint numDegrees = event->angleDelta(); + + lineOffset = vbar->value(); + + if (!numPixels.isNull()) + { + wheelPixelCounter += numPixels.y(); + //printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() ); + } + else if (!numDegrees.isNull()) + { + //QPoint numSteps = numDegrees / 15; + //printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() ); + //printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing ); + wheelPixelCounter += (pxLineSpacing * numDegrees.y()) / (15*8); + } + //printf("Wheel Event: %i\n", wheelPixelCounter); + + if ( wheelPixelCounter >= pxLineSpacing ) + { + lineOffset += (wheelPixelCounter / pxLineSpacing); + + if ( lineOffset > recBufMax ) + { + lineOffset = recBufMax; + } + vbar->setValue( lineOffset ); + + wheelPixelCounter = wheelPixelCounter % pxLineSpacing; + } + else if ( wheelPixelCounter <= -pxLineSpacing ) + { + lineOffset += (wheelPixelCounter / pxLineSpacing); + + if ( lineOffset < 0 ) + { + lineOffset = 0; + } + vbar->setValue( lineOffset ); + + wheelPixelCounter = wheelPixelCounter % pxLineSpacing; + } + + event->accept(); +} +//---------------------------------------------------- void QTraceLogView::resizeEvent(QResizeEvent *event) { viewWidth = event->size().width(); diff --git a/src/drivers/Qt/TraceLogger.h b/src/drivers/Qt/TraceLogger.h index 790c44ad..090dd136 100644 --- a/src/drivers/Qt/TraceLogger.h +++ b/src/drivers/Qt/TraceLogger.h @@ -62,6 +62,7 @@ class QTraceLogView : public QWidget protected: void paintEvent(QPaintEvent *event); void resizeEvent(QResizeEvent *event); + void wheelEvent(QWheelEvent *event); void calcFontData(void); @@ -80,6 +81,7 @@ class QTraceLogView : public QWidget int viewLines; int viewWidth; int viewHeight; + int wheelPixelCounter; }; class TraceLoggerDialog_t : public QDialog