Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions include/internal/QCodeEditor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,12 @@ class QCodeEditor : public QTextEdit
*/
void clearSquiggle();

Q_SIGNALS:
/**
* @brief Signal, the font is changed by the wheel event.
*/
void fontChanged(const QFont &newFont);

public Q_SLOTS:

/**
Expand Down Expand Up @@ -245,6 +251,11 @@ class QCodeEditor : public QTextEdit
*/
void changeEvent(QEvent *e) override;

/**
* @brief Method, update the font size when the wheel is rotated with Ctrl pressed
*/
void wheelEvent(QWheelEvent *e) override;

/**
* @brief Method, that's called on any key press, posted
* into code editor widget. This method is overloaded for:
Expand Down
27 changes: 27 additions & 0 deletions src/internal/QCodeEditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,33 @@ void QCodeEditor::changeEvent(QEvent *e)
updateBottomMargin();
}

void QCodeEditor::wheelEvent(QWheelEvent *e)
{
if (e->modifiers() == Qt::ControlModifier)
{
const auto sizes = QFontDatabase::standardSizes();
if (sizes.isEmpty())
{
qDebug() << "QFontDatabase::standardSizes() is empty";
return;
}
int newSize = font().pointSize();
if (e->angleDelta().y() > 0)
newSize = qMin(newSize + 1, sizes.last());
else if (e->angleDelta().y() < 0)
newSize = qMax(newSize - 1, sizes.first());
if (newSize != font().pointSize())
{
QFont newFont = font();
newFont.setPointSize(newSize);
setFont(newFont);
emit fontChanged(newFont);
}
}
else
QTextEdit::wheelEvent(e);
}

void QCodeEditor::updateLineGeometry()
{
QRect cr = contentsRect();
Expand Down