TextEditor: bound increase and decreaseFontZoom to a 10% grid

This allows to get back to a 100% font zoom with the keyboard shortcuts
by zooming to an odd zoom factor by other means.

Change-Id: Ie90853367b17c207e9c47fc108b8d6f451e0f838
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
David Schulz
2024-02-23 12:36:11 +01:00
parent 9f7d8b06b2
commit 8feb31b2ac
5 changed files with 40 additions and 11 deletions

View File

@@ -6891,6 +6891,18 @@ static void showZoomIndicator(QWidget *editor, const int newZoom)
Utils::FadingIndicator::SmallText); Utils::FadingIndicator::SmallText);
} }
void TextEditorWidget::increaseFontZoom()
{
d->clearVisibleFoldedBlock();
showZoomIndicator(this, TextEditorSettings::increaseFontZoom());
}
void TextEditorWidget::decreaseFontZoom()
{
d->clearVisibleFoldedBlock();
showZoomIndicator(this, TextEditorSettings::decreaseFontZoom());
}
void TextEditorWidget::zoomF(float delta) void TextEditorWidget::zoomF(float delta)
{ {
d->clearVisibleFoldedBlock(); d->clearVisibleFoldedBlock();

View File

@@ -349,6 +349,8 @@ public:
void pasteWithoutFormat(); void pasteWithoutFormat();
void switchUtf8bom(); void switchUtf8bom();
void increaseFontZoom();
void decreaseFontZoom();
void zoomF(float delta); void zoomF(float delta);
void zoomReset(); void zoomReset();

View File

@@ -394,11 +394,11 @@ void TextEditorActionHandlerPrivate::createActions()
QKeySequence(), QKeySequence(),
G_EDIT_COLLAPSING, advancedEditMenu); G_EDIT_COLLAPSING, advancedEditMenu);
registerAction(INCREASE_FONT_SIZE, registerAction(INCREASE_FONT_SIZE,
[] (TextEditorWidget *w) { w->zoomF(1.f); }, false, Tr::tr("Increase Font Size"), [] (TextEditorWidget *w) { w->increaseFontZoom(); }, false, Tr::tr("Increase Font Size"),
QKeySequence(Tr::tr("Ctrl++")), QKeySequence(Tr::tr("Ctrl++")),
G_EDIT_FONT, advancedEditMenu); G_EDIT_FONT, advancedEditMenu);
registerAction(DECREASE_FONT_SIZE, registerAction(DECREASE_FONT_SIZE,
[] (TextEditorWidget *w) { w->zoomF(-1.f); }, false, Tr::tr("Decrease Font Size"), [] (TextEditorWidget *w) { w->decreaseFontZoom(); }, false, Tr::tr("Decrease Font Size"),
QKeySequence(Tr::tr("Ctrl+-")), QKeySequence(Tr::tr("Ctrl+-")),
G_EDIT_FONT, advancedEditMenu); G_EDIT_FONT, advancedEditMenu);
registerAction(RESET_FONT_SIZE, registerAction(RESET_FONT_SIZE,

View File

@@ -560,20 +560,33 @@ Utils::Id TextEditorSettings::languageId(const QString &mimeType)
return d->m_mimeTypeToLanguage.value(mimeType); return d->m_mimeTypeToLanguage.value(mimeType);
} }
static void setFontZoom(int zoom) static int setFontZoom(int zoom)
{ {
zoom = qMax(10, zoom);
if (d->m_fontSettings.fontZoom() != zoom) {
d->m_fontSettings.setFontZoom(zoom); d->m_fontSettings.setFontZoom(zoom);
d->m_fontSettings.toSettings(Core::ICore::settings()); d->m_fontSettings.toSettings(Core::ICore::settings());
emit textEditorSettings().fontSettingsChanged(d->m_fontSettings); emit textEditorSettings().fontSettingsChanged(d->m_fontSettings);
} }
return zoom;
}
int TextEditorSettings::increaseFontZoom()
{
const int previousZoom = d->m_fontSettings.fontZoom();
return setFontZoom(previousZoom + 10 - previousZoom % 10);
}
int TextEditorSettings::decreaseFontZoom()
{
const int previousZoom = d->m_fontSettings.fontZoom();
const int delta = previousZoom % 10;
return setFontZoom(previousZoom - (delta == 0 ? 10 : delta));
}
int TextEditorSettings::increaseFontZoom(int step) int TextEditorSettings::increaseFontZoom(int step)
{ {
const int previousZoom = d->m_fontSettings.fontZoom(); return setFontZoom(d->m_fontSettings.fontZoom() + step);
const int newZoom = qMax(10, previousZoom + step);
if (newZoom != previousZoom)
setFontZoom(newZoom);
return newZoom;
} }
void TextEditorSettings::resetFontZoom() void TextEditorSettings::resetFontZoom()

View File

@@ -76,6 +76,8 @@ public:
static void registerMimeTypeForLanguageId(const char *mimeType, Utils::Id languageId); static void registerMimeTypeForLanguageId(const char *mimeType, Utils::Id languageId);
static Utils::Id languageId(const QString &mimeType); static Utils::Id languageId(const QString &mimeType);
static int increaseFontZoom();
static int decreaseFontZoom();
static int increaseFontZoom(int step); static int increaseFontZoom(int step);
static void resetFontZoom(); static void resetFontZoom();