Lagrange [release]
Persistent input prompt zoom level
[1mdiff --git a/src/app.c b/src/app.c[m
[1mindex 6ca2b663..7cb04a8d 100644[m
[1m--- a/src/app.c[m
[1m+++ b/src/app.c[m
[36m@@ -288,6 +288,7 @@[m [mstatic iString *serializePrefs_App_(const iApp *d) {[m
cstr_String(&d->prefs.strings[monospaceFont_PrefsString]),[m
cstr_String(&d->prefs.strings[monospaceDocumentFont_PrefsString]));[m
appendFormat_String(str, "zoom.set arg:%d\n", d->prefs.zoomPercent);[m
[32m+[m[32m appendFormat_String(str, "inputzoom.set arg:%d\n", d->prefs.inputZoomLevel);[m
appendFormat_String(str, "pinsplit.set arg:%d\n", d->prefs.pinSplit);[m
appendFormat_String(str, "smoothscroll arg:%d\n", d->prefs.smoothScrolling);[m
appendFormat_String(str, "scrollspeed arg:%d type:%d\n", d->prefs.smoothScrollSpeed[keyboard_ScrollType], keyboard_ScrollType);[m
[36m@@ -4177,6 +4178,11 @@[m [miBool handleCommand_App(const char *cmd) {[m
0);[m
return iTrue;[m
}[m
[32m+[m[32m else if (equal_Command(cmd, "inputzoom.set")) {[m
[32m+[m[32m d->prefs.inputZoomLevel = arg_Command(cmd);[m
[32m+[m[32m d->prefs.inputZoomLevel = iClamp(d->prefs.inputZoomLevel, 0, 2);[m
[32m+[m[32m return iTrue;[m
[32m+[m[32m }[m
else if (equal_Command(cmd, "zoom.set")) {[m
if (!isFrozen) {[m
setFreezeDraw_MainWindow(get_MainWindow(), iTrue); /* no intermediate draws before docs updated */[m
[1mdiff --git a/src/prefs.c b/src/prefs.c[m
[1mindex 25021f7a..bb204ab4 100644[m
[1m--- a/src/prefs.c[m
[1m+++ b/src/prefs.c[m
[36m@@ -45,6 +45,7 @@[m [mvoid init_Prefs(iPrefs *d) {[m
d->retainWindowSize = iTrue;[m
d->uiAnimations = iTrue;[m
d->uiScale = 1.0f; /* default set elsewhere */[m
[32m+[m[32m d->inputZoomLevel = 0;[m
d->zoomPercent = 100;[m
d->navbarActions[0] = back_ToolbarAction;[m
d->navbarActions[1] = forward_ToolbarAction;[m
[1mdiff --git a/src/prefs.h b/src/prefs.h[m
[1mindex 5cf5e6a3..09acae8e 100644[m
[1m--- a/src/prefs.h[m
[1m+++ b/src/prefs.h[m
[36m@@ -200,6 +200,7 @@[m [mstruct Impl_Prefs {[m
float uiScale;[m
enum iToolbarAction navbarActions[maxNavbarActions_Prefs];[m
enum iToolbarAction toolbarActions[2];[m
[32m+[m[32m int inputZoomLevel;[m
/* Document presentation */[m
int zoomPercent;[m
/* Behavior */[m
[1mdiff --git a/src/ui/util.c b/src/ui/util.c[m
[1mindex eab6ca96..176fda9e 100644[m
[1m--- a/src/ui/util.c[m
[1m+++ b/src/ui/util.c[m
[36m@@ -2097,8 +2097,6 @@[m [mstatic void acceptValueInput_(iWidget *dlg) {[m
}[m
}[m
[m
[31m-static int valueInputSizeIndex_ = 0;[m
[31m-[m
iLocalDef int metricFromIndex_(int index) {[m
const int sizes[3] = { 100, 115, 130 };[m
return sizes[iClamp(index, 0, iElemCount(sizes) - 1)];[m
[36m@@ -2117,7 +2115,7 @@[m [mstatic void updateValueInputSizing_(iWidget *dlg) {[m
}[m
else {[m
dlg->rect.size.x = iMin(rootSize.x,[m
[31m- metricFromIndex_(valueInputSizeIndex_) * gap_UI);[m
[32m+[m[32m metricFromIndex_(prefs_App()->inputZoomLevel) * gap_UI);[m
/*title ? title->rect.size.x : 0*//*,[m
prompt->rect.size.x);*/[m
}[m
[36m@@ -2249,17 +2247,19 @@[m [miBool valueInputHandler_(iWidget *dlg, const char *cmd) {[m
if resizing in needed in other contexts. */[m
if (startsWith_String(id_Widget(dlg), "!document.input.submit")) {[m
iInputWidget *input = findChild_Widget(dlg, "input");[m
[32m+[m[32m int sizeIndex = prefs_App()->inputZoomLevel;[m
if (equal_Command(cmd, "zoom.set")) {[m
[31m- valueInputSizeIndex_ = 0;[m
[32m+[m[32m sizeIndex = 0;[m
}[m
else {[m
[31m- valueInputSizeIndex_ += iSign(arg_Command(cmd));[m
[31m- valueInputSizeIndex_ = iClamp(valueInputSizeIndex_, 0, 2);[m
[32m+[m[32m sizeIndex += iSign(arg_Command(cmd));[m
[32m+[m[32m sizeIndex = iClamp(sizeIndex, 0, 2);[m
}[m
[32m+[m[32m ((iPrefs *) prefs_App())->inputZoomLevel = sizeIndex; /* const cast... */[m
setFont_InputWidget(input,[m
FONT_ID(default_FontId,[m
regular_FontStyle,[m
[31m- uiMedium_FontSize + valueInputSizeIndex_));[m
[32m+[m[32m uiMedium_FontSize + sizeIndex));[m
updateValueInputSizing_(dlg);[m
arrange_Widget(dlg);[m
arrange_Widget(dlg);[m
[36m@@ -2385,9 +2385,10 @@[m [miWidget *makeValueInputWithAdditionalActions_Widget(iWidget *parent, const iStri[m
}[m
else if (isDesktop_Platform()) {[m
/* The input prompt font is resizable. */[m
[31m- setFont_InputWidget([m
[31m- input,[m
[31m- FONT_ID(default_FontId, regular_FontStyle, uiMedium_FontSize + valueInputSizeIndex_));[m
[32m+[m[32m setFont_InputWidget(input,[m
[32m+[m[32m FONT_ID(default_FontId,[m
[32m+[m[32m regular_FontStyle,[m
[32m+[m[32m uiMedium_FontSize + prefs_App()->inputZoomLevel));[m
}[m
if (initialValue) {[m
setText_InputWidget(input, initialValue);[m