1
0
Fork 0

Merge pull request #2685 from torusrxxx/patch000000c1

Allow the user to change the font size with Ctrl and mouse wheel
This commit is contained in:
Duncan Ogilvie 2021-07-19 22:46:11 +02:00 committed by GitHub
commit 68e676de2b
Signed by: GitHub
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 87 additions and 16 deletions

View File

@ -571,25 +571,40 @@ void AbstractTableView::mouseDoubleClickEvent(QMouseEvent* event)
void AbstractTableView::wheelEvent(QWheelEvent* event)
{
int numDegrees = event->delta() / 8;
int numSteps = numDegrees / 15;
QPoint numDegrees = event->angleDelta() / 8;
QPoint numSteps = numDegrees / 15;
if(numSteps > 0)
if(event->modifiers() == Qt::NoModifier)
{
if(mMouseWheelScrollDelta > 0)
for(int i = 0; i < mMouseWheelScrollDelta * numSteps; i++)
verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepSub);
else // -1 : one screen at a time
verticalScrollBar()->triggerAction(QAbstractSlider::SliderPageStepSub);
}
else
{
if(mMouseWheelScrollDelta > 0)
for(int i = 0; i < mMouseWheelScrollDelta * numSteps * -1; i++)
verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepAdd);
else // -1 : one screen at a time
verticalScrollBar()->triggerAction(QAbstractSlider::SliderPageStepAdd);
if(numSteps.y() > 0)
{
if(mMouseWheelScrollDelta > 0)
for(int i = 0; i < mMouseWheelScrollDelta * numSteps.y(); i++)
verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepSub);
else // -1 : one screen at a time
verticalScrollBar()->triggerAction(QAbstractSlider::SliderPageStepSub);
}
else if(numSteps.y() < 0)
{
if(mMouseWheelScrollDelta > 0)
for(int i = 0; i < mMouseWheelScrollDelta * numSteps.y() * -1; i++)
verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepAdd);
else // -1 : one screen at a time
verticalScrollBar()->triggerAction(QAbstractSlider::SliderPageStepAdd);
}
else if(numSteps.x() > 0)
{
for(int i = 0; i < 20 * numSteps.x(); i++)
horizontalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepSub);
}
else if(numSteps.x() < 0)
{
for(int i = 0; i < 20 * numSteps.x() * -1; i++)
horizontalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepAdd);
}
}
else if(event->modifiers() == Qt::ControlModifier) // Zoom
Config()->zoomFont("AbstractTableView", event);
}

View File

@ -832,6 +832,14 @@ void Disassembly::mouseReleaseEvent(QMouseEvent* event)
AbstractTableView::mouseReleaseEvent(event);
}
void Disassembly::wheelEvent(QWheelEvent* event)
{
if(event->modifiers() == Qt::NoModifier)
AbstractTableView::wheelEvent(event);
else if(event->modifiers() == Qt::ControlModifier) // Zoom
Config()->zoomFont("Disassembly", event);
}
/************************************************************************************
Keyboard Management
************************************************************************************/

View File

@ -25,6 +25,7 @@ public:
void mouseMoveEvent(QMouseEvent* event) override;
void mousePressEvent(QMouseEvent* event) override;
void mouseReleaseEvent(QMouseEvent* event) override;
void wheelEvent(QWheelEvent* event) override;
// Keyboard Management
void keyPressEvent(QKeyEvent* event) override;

View File

@ -542,6 +542,14 @@ void HexDump::mouseReleaseEvent(QMouseEvent* event)
AbstractTableView::mouseReleaseEvent(event);
}
void HexDump::wheelEvent(QWheelEvent* event)
{
if(event->modifiers() == Qt::NoModifier)
AbstractTableView::wheelEvent(event);
else if(event->modifiers() == Qt::ControlModifier) // Zoom
Config()->zoomFont("HexDump", event);
}
void HexDump::keyPressEvent(QKeyEvent* event)
{
int key = event->key();

View File

@ -92,6 +92,7 @@ public:
void mouseMoveEvent(QMouseEvent* event) override;
void mousePressEvent(QMouseEvent* event) override;
void mouseReleaseEvent(QMouseEvent* event) override;
void wheelEvent(QWheelEvent* event) override;
void keyPressEvent(QKeyEvent* event) override;
QString paintContent(QPainter* painter, dsint rowBase, int rowOffset, int col, int x, int y, int w, int h) override;

View File

@ -524,6 +524,14 @@ void CPUStack::mouseDoubleClickEvent(QMouseEvent* event)
}
}
void CPUStack::wheelEvent(QWheelEvent* event)
{
if(event->modifiers() == Qt::NoModifier)
AbstractTableView::wheelEvent(event);
else if(event->modifiers() == Qt::ControlModifier) // Zoom
Config()->zoomFont("Stack", event);
}
void CPUStack::stackDumpAt(duint addr, duint csp)
{
if(DbgMemIsValidReadPtr(addr))

View File

@ -22,6 +22,7 @@ public:
QString paintContent(QPainter* painter, dsint rowBase, int rowOffset, int col, int x, int y, int w, int h) override;
void contextMenuEvent(QContextMenuEvent* event);
void mouseDoubleClickEvent(QMouseEvent* event);
void wheelEvent(QWheelEvent* event) override;
void setupContextMenu();
void updateFreezeStackAction();

View File

@ -899,6 +899,10 @@ void DisassemblerGraphView::wheelEvent(QWheelEvent* event)
event->accept();
}
else if(event->modifiers() == Qt::ControlModifier)
{
Config()->zoomFont("Disassembly", event);
}
else
{
QAbstractScrollArea::wheelEvent(event);

View File

@ -5,6 +5,7 @@
#include <QIcon>
#include <QScreen>
#include <QGuiApplication>
#include <QWheelEvent>
#include "AbstractTableView.h"
Configuration* Configuration::mPtr = nullptr;
@ -1137,6 +1138,27 @@ void Configuration::registerMainMenuStringList(QList<QAction*>* menu)
NamedMenuBuilders.append(MenuMap(menu, menu->size() - 1));
}
void Configuration::zoomFont(const QString & fontName, QWheelEvent* event)
{
QPoint numDegrees = event->angleDelta() / 8;
int ticks = numDegrees.y() / 15;
QFont myFont = Fonts[fontName];
char fontSizes[] = {6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 0}; // The list of font sizes in ApperanceDialog
char* currentFontSize = strchr(fontSizes, myFont.pointSize() & 127);
if(currentFontSize)
{
currentFontSize += ticks;
if(currentFontSize > fontSizes + 11)
currentFontSize = fontSizes + 11;
else if(currentFontSize < fontSizes)
currentFontSize = fontSizes;
myFont.setPointSize(*currentFontSize);
Fonts[fontName] = myFont;
writeFonts();
GuiUpdateAllViews();
}
}
static bool IsPointVisible(QPoint pos)
{
for(const auto & i : QGuiApplication::screens())

View File

@ -20,6 +20,7 @@
class MenuBuilder;
class QAction;
class QWheelEvent;
class Configuration : public QObject
{
@ -69,6 +70,8 @@ public:
void setupWindowPos(QWidget* window);
void saveWindowPos(QWidget* window);
void zoomFont(const QString & fontName, QWheelEvent* event);
//default setting maps
QMap<QString, QColor> defaultColors;
QMap<QString, QMap<QString, bool>> defaultBools;