diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2022-02-17 13:41:59 +0200 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2022-02-17 13:41:59 +0200 |
commit | bbd7c82c7da273408ea965a9db368a35f8236943 (patch) | |
tree | 90762ffb0b9a4053053b5a6d81a0909fc5e484e4 | |
parent | d743f11dd80264c2ac871981fd79ef9288bde219 (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.c | 8 | ||||
-rw-r--r-- | src/ui/inputwidget.c | 5 | ||||
-rw-r--r-- | src/ui/inputwidget.h | 1 | ||||
-rw-r--r-- | src/ui/util.c | 4 |
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 | ||
1204 | void deselect_InputWidget(iInputWidget *d) { | ||
1205 | iZap(d->mark); | ||
1206 | refresh_Widget(as_Widget(d)); | ||
1207 | } | ||
1208 | |||
1204 | void validate_InputWidget(iInputWidget *d) { | 1209 | void 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); | |||
59 | void begin_InputWidget (iInputWidget *); | 59 | void begin_InputWidget (iInputWidget *); |
60 | void end_InputWidget (iInputWidget *, iBool accept); | 60 | void end_InputWidget (iInputWidget *, iBool accept); |
61 | void selectAll_InputWidget (iInputWidget *); | 61 | void selectAll_InputWidget (iInputWidget *); |
62 | void deselect_InputWidget (iInputWidget *); | ||
62 | void validate_InputWidget (iInputWidget *); | 63 | void validate_InputWidget (iInputWidget *); |
63 | 64 | ||
64 | void setSelectAllOnFocus_InputWidget (iInputWidget *, iBool selectAllOnFocus); | 65 | void 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 | ||
1714 | static void acceptValueInput_(iWidget *dlg) { | 1714 | static 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 | } |