summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2022-02-17 13:41:59 +0200
committerJaakko Keränen <jaakko.keranen@iki.fi>2022-02-17 13:41:59 +0200
commitbbd7c82c7da273408ea965a9db368a35f8236943 (patch)
tree90762ffb0b9a4053053b5a6d81a0909fc5e484e4
parentd743f11dd80264c2ac871981fd79ef9288bde219 (diff)
Save text entered in the input prompt
Use the same mechanism as in the Upload dialog to keep the text entered in the input prompt safe, in case the dialog is accidentally closed or the app crashes.
-rw-r--r--src/ui/documentwidget.c8
-rw-r--r--src/ui/inputwidget.c5
-rw-r--r--src/ui/inputwidget.h1
-rw-r--r--src/ui/util.c4
4 files changed, 14 insertions, 4 deletions
diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c
index 1f3e0e37..7c071f47 100644
--- a/src/ui/documentwidget.c
+++ b/src/ui/documentwidget.c
@@ -3273,9 +3273,11 @@ static void checkResponse_DocumentWidget_(iDocumentWidget *d) {
3273 setTextColor_LabelWidget(menu, uiTextAction_ColorId); 3273 setTextColor_LabelWidget(menu, uiTextAction_ColorId);
3274 } 3274 }
3275 } 3275 }
3276 setValidator_InputWidget(findChild_Widget(dlg, "input"), inputQueryValidator_, d); 3276 iInputWidget *input = findChild_Widget(dlg, "input");
3277 setSensitiveContent_InputWidget(findChild_Widget(dlg, "input"), 3277 setValidator_InputWidget(input, inputQueryValidator_, d);
3278 statusCode == sensitiveInput_GmStatusCode); 3278 setBackupFileName_InputWidget(input, "inputbackup.txt");
3279 setSelectAllOnFocus_InputWidget(input, iTrue);
3280 setSensitiveContent_InputWidget(input, statusCode == sensitiveInput_GmStatusCode);
3279 if (document_App() != d) { 3281 if (document_App() != d) {
3280 postCommandf_App("tabs.switch page:%p", d); 3282 postCommandf_App("tabs.switch page:%p", d);
3281 } 3283 }
diff --git a/src/ui/inputwidget.c b/src/ui/inputwidget.c
index 6a8d428a..1b68ff57 100644
--- a/src/ui/inputwidget.c
+++ b/src/ui/inputwidget.c
@@ -1201,6 +1201,11 @@ void selectAll_InputWidget(iInputWidget *d) {
1201#endif 1201#endif
1202} 1202}
1203 1203
1204void deselect_InputWidget(iInputWidget *d) {
1205 iZap(d->mark);
1206 refresh_Widget(as_Widget(d));
1207}
1208
1204void validate_InputWidget(iInputWidget *d) { 1209void validate_InputWidget(iInputWidget *d) {
1205 if (d->validator) { 1210 if (d->validator) {
1206 d->validator(d, d->validatorContext); /* this may change the contents */ 1211 d->validator(d, d->validatorContext); /* this may change the contents */
diff --git a/src/ui/inputwidget.h b/src/ui/inputwidget.h
index 000fa4b7..832f7853 100644
--- a/src/ui/inputwidget.h
+++ b/src/ui/inputwidget.h
@@ -59,6 +59,7 @@ void setBackupFileName_InputWidget (iInputWidget *, const char *fileName);
59void begin_InputWidget (iInputWidget *); 59void begin_InputWidget (iInputWidget *);
60void end_InputWidget (iInputWidget *, iBool accept); 60void end_InputWidget (iInputWidget *, iBool accept);
61void selectAll_InputWidget (iInputWidget *); 61void selectAll_InputWidget (iInputWidget *);
62void deselect_InputWidget (iInputWidget *);
62void validate_InputWidget (iInputWidget *); 63void validate_InputWidget (iInputWidget *);
63 64
64void setSelectAllOnFocus_InputWidget (iInputWidget *, iBool selectAllOnFocus); 65void setSelectAllOnFocus_InputWidget (iInputWidget *, iBool selectAllOnFocus);
diff --git a/src/ui/util.c b/src/ui/util.c
index 94e4b00c..de755b3f 100644
--- a/src/ui/util.c
+++ b/src/ui/util.c
@@ -1712,13 +1712,14 @@ iLabelWidget *addDialogTitle_Widget(iWidget *dlg, const char *text, const char *
1712} 1712}
1713 1713
1714static void acceptValueInput_(iWidget *dlg) { 1714static void acceptValueInput_(iWidget *dlg) {
1715 const iInputWidget *input = findChild_Widget(dlg, "input"); 1715 iInputWidget *input = findChild_Widget(dlg, "input");
1716 if (!isEmpty_String(id_Widget(dlg))) { 1716 if (!isEmpty_String(id_Widget(dlg))) {
1717 const iString *val = text_InputWidget(input); 1717 const iString *val = text_InputWidget(input);
1718 postCommandf_App("%s arg:%d value:%s", 1718 postCommandf_App("%s arg:%d value:%s",
1719 cstr_String(id_Widget(dlg)), 1719 cstr_String(id_Widget(dlg)),
1720 toInt_String(val), 1720 toInt_String(val),
1721 cstr_String(val)); 1721 cstr_String(val));
1722 setBackupFileName_InputWidget(input, NULL);
1722 } 1723 }
1723} 1724}
1724 1725
@@ -1782,6 +1783,7 @@ iBool valueInputHandler_(iWidget *dlg, const char *cmd) {
1782 else if (equal_Command(cmd, "valueinput.set")) { 1783 else if (equal_Command(cmd, "valueinput.set")) {
1783 iInputWidget *input = findChild_Widget(dlg, "input"); 1784 iInputWidget *input = findChild_Widget(dlg, "input");
1784 setTextUndoableCStr_InputWidget(input, suffixPtr_Command(cmd, "text"), iTrue); 1785 setTextUndoableCStr_InputWidget(input, suffixPtr_Command(cmd, "text"), iTrue);
1786 deselect_InputWidget(input);
1785 validate_InputWidget(input); 1787 validate_InputWidget(input);
1786 return iTrue; 1788 return iTrue;
1787 } 1789 }