diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-06-09 19:01:15 +0300 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-06-09 19:01:15 +0300 |
commit | f63ed76597b462c60b3a6ad89f8c165ffb87d00c (patch) | |
tree | 2aca3537930bce28acff14c0cee0a11fa1988661 /src/ui/util.c | |
parent | 5f9685010addd4a0f04c13f889856084381dd1c6 (diff) | |
parent | ee17ef3d0135027fbc4ff816dd9e793b4bb0b883 (diff) |
Merge branch 'dev' into work/typesetter
# Conflicts:
# src/gmdocument.c
# src/ui/documentwidget.c
# src/ui/inputwidget.h
Diffstat (limited to 'src/ui/util.c')
-rw-r--r-- | src/ui/util.c | 67 |
1 files changed, 51 insertions, 16 deletions
diff --git a/src/ui/util.c b/src/ui/util.c index 4b35f8f7..c4fb8886 100644 --- a/src/ui/util.c +++ b/src/ui/util.c | |||
@@ -1176,6 +1176,7 @@ iBool valueInputHandler_(iWidget *dlg, const char *cmd) { | |||
1176 | postCommandf_App("valueinput.cancelled id:%s", cstr_String(id_Widget(dlg))); | 1176 | postCommandf_App("valueinput.cancelled id:%s", cstr_String(id_Widget(dlg))); |
1177 | setId_Widget(dlg, ""); /* no further commands to emit */ | 1177 | setId_Widget(dlg, ""); /* no further commands to emit */ |
1178 | } | 1178 | } |
1179 | setupSheetTransition_Mobile(dlg, iFalse); | ||
1179 | destroy_Widget(dlg); | 1180 | destroy_Widget(dlg); |
1180 | return iTrue; | 1181 | return iTrue; |
1181 | } | 1182 | } |
@@ -1184,11 +1185,13 @@ iBool valueInputHandler_(iWidget *dlg, const char *cmd) { | |||
1184 | else if (equal_Command(cmd, "cancel")) { | 1185 | else if (equal_Command(cmd, "cancel")) { |
1185 | postCommandf_App("valueinput.cancelled id:%s", cstr_String(id_Widget(dlg))); | 1186 | postCommandf_App("valueinput.cancelled id:%s", cstr_String(id_Widget(dlg))); |
1186 | setId_Widget(dlg, ""); /* no further commands to emit */ | 1187 | setId_Widget(dlg, ""); /* no further commands to emit */ |
1188 | setupSheetTransition_Mobile(dlg, iFalse); | ||
1187 | destroy_Widget(dlg); | 1189 | destroy_Widget(dlg); |
1188 | return iTrue; | 1190 | return iTrue; |
1189 | } | 1191 | } |
1190 | else if (equal_Command(cmd, "valueinput.accept")) { | 1192 | else if (equal_Command(cmd, "valueinput.accept")) { |
1191 | acceptValueInput_(dlg); | 1193 | acceptValueInput_(dlg); |
1194 | setupSheetTransition_Mobile(dlg, iFalse); | ||
1192 | destroy_Widget(dlg); | 1195 | destroy_Widget(dlg); |
1193 | return iTrue; | 1196 | return iTrue; |
1194 | } | 1197 | } |
@@ -1324,6 +1327,7 @@ static iBool messageHandler_(iWidget *msg, const char *cmd) { | |||
1324 | equal_Command(cmd, "scrollbar.fade") || | 1327 | equal_Command(cmd, "scrollbar.fade") || |
1325 | equal_Command(cmd, "widget.overflow") || | 1328 | equal_Command(cmd, "widget.overflow") || |
1326 | startsWith_CStr(cmd, "window."))) { | 1329 | startsWith_CStr(cmd, "window."))) { |
1330 | setupSheetTransition_Mobile(msg, iFalse); | ||
1327 | destroy_Widget(msg); | 1331 | destroy_Widget(msg); |
1328 | } | 1332 | } |
1329 | return iFalse; | 1333 | return iFalse; |
@@ -1521,6 +1525,7 @@ void updatePreferencesLayout_Widget(iWidget *prefs) { | |||
1521 | static const char *inputIds[] = { | 1525 | static const char *inputIds[] = { |
1522 | "prefs.searchurl", | 1526 | "prefs.searchurl", |
1523 | "prefs.downloads", | 1527 | "prefs.downloads", |
1528 | "prefs.userfont", | ||
1524 | "prefs.ca.file", | 1529 | "prefs.ca.file", |
1525 | "prefs.ca.path", | 1530 | "prefs.ca.path", |
1526 | "prefs.proxy.gemini", | 1531 | "prefs.proxy.gemini", |
@@ -1547,8 +1552,8 @@ void updatePreferencesLayout_Widget(iWidget *prefs) { | |||
1547 | } | 1552 | } |
1548 | } | 1553 | } |
1549 | 1554 | ||
1550 | static void addDialogInputWithHeading_(iWidget *headings, iWidget *values, const char *labelText, | 1555 | static void addDialogInputWithHeadingAndFlags_(iWidget *headings, iWidget *values, const char *labelText, |
1551 | const char *inputId, iInputWidget *input) { | 1556 | const char *inputId, iInputWidget *input, int64_t flags) { |
1552 | iLabelWidget *head = addChild_Widget(headings, iClob(makeHeading_Widget(labelText))); | 1557 | iLabelWidget *head = addChild_Widget(headings, iClob(makeHeading_Widget(labelText))); |
1553 | #if defined (iPlatformMobile) | 1558 | #if defined (iPlatformMobile) |
1554 | /* On mobile, inputs have 2 gaps of extra padding. */ | 1559 | /* On mobile, inputs have 2 gaps of extra padding. */ |
@@ -1560,6 +1565,13 @@ static void addDialogInputWithHeading_(iWidget *headings, iWidget *values, const | |||
1560 | /* Ensure that the label has the same height as the input widget. */ | 1565 | /* Ensure that the label has the same height as the input widget. */ |
1561 | as_Widget(head)->sizeRef = as_Widget(input); | 1566 | as_Widget(head)->sizeRef = as_Widget(input); |
1562 | } | 1567 | } |
1568 | setFlags_Widget(as_Widget(head), flags, iTrue); | ||
1569 | setFlags_Widget(as_Widget(input), flags, iTrue); | ||
1570 | } | ||
1571 | |||
1572 | static void addDialogInputWithHeading_(iWidget *headings, iWidget *values, const char *labelText, | ||
1573 | const char *inputId, iInputWidget *input) { | ||
1574 | addDialogInputWithHeadingAndFlags_(headings, values, labelText, inputId, input, 0); | ||
1563 | } | 1575 | } |
1564 | 1576 | ||
1565 | iInputWidget *addTwoColumnDialogInputField_Widget(iWidget *headings, iWidget *values, | 1577 | iInputWidget *addTwoColumnDialogInputField_Widget(iWidget *headings, iWidget *values, |
@@ -1686,6 +1698,8 @@ iWidget *makePreferences_Widget(void) { | |||
1686 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.customframe}"))); | 1698 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.customframe}"))); |
1687 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.customframe"))); | 1699 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.customframe"))); |
1688 | #endif | 1700 | #endif |
1701 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.animate}"))); | ||
1702 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.animate"))); | ||
1689 | makeTwoColumnHeading_("${heading.prefs.scrolling}", headings, values); | 1703 | makeTwoColumnHeading_("${heading.prefs.scrolling}", headings, values); |
1690 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.smoothscroll}"))); | 1704 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.smoothscroll}"))); |
1691 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.smoothscroll"))); | 1705 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.smoothscroll"))); |
@@ -1775,6 +1789,7 @@ iWidget *makePreferences_Widget(void) { | |||
1775 | updateSize_LabelWidget((iLabelWidget *) tog); | 1789 | updateSize_LabelWidget((iLabelWidget *) tog); |
1776 | } | 1790 | } |
1777 | addChildFlags_Widget(values, iClob(boldLink), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); | 1791 | addChildFlags_Widget(values, iClob(boldLink), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); |
1792 | addPrefsInputWithHeading_(headings, values, "prefs.userfont", iClob(new_InputWidget(0))); | ||
1778 | } | 1793 | } |
1779 | makeTwoColumnHeading_("${heading.prefs.paragraph}", headings, values); | 1794 | makeTwoColumnHeading_("${heading.prefs.paragraph}", headings, values); |
1780 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.linewidth}"))); | 1795 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.linewidth}"))); |
@@ -1834,7 +1849,7 @@ iWidget *makePreferences_Widget(void) { | |||
1834 | updatePreferencesLayout_Widget(dlg); | 1849 | updatePreferencesLayout_Widget(dlg); |
1835 | addChild_Widget(dlg, | 1850 | addChild_Widget(dlg, |
1836 | iClob(makeDialogButtons_Widget( | 1851 | iClob(makeDialogButtons_Widget( |
1837 | (iMenuItem[]){ { "${dismiss}", SDLK_ESCAPE, 0, "prefs.dismiss" } }, 1))); | 1852 | (iMenuItem[]){ { "${close}", SDLK_ESCAPE, 0, "prefs.dismiss" } }, 1))); |
1838 | addChild_Widget(dlg->root->widget, iClob(dlg)); | 1853 | addChild_Widget(dlg->root->widget, iClob(dlg)); |
1839 | finalizeSheet_Mobile(dlg); | 1854 | finalizeSheet_Mobile(dlg); |
1840 | setupSheetTransition_Mobile(dlg, iTrue); | 1855 | setupSheetTransition_Mobile(dlg, iTrue); |
@@ -1908,6 +1923,7 @@ static iBool handleBookmarkCreationCommands_SidebarWidget_(iWidget *editor, cons | |||
1908 | } | 1923 | } |
1909 | postCommand_App("bookmarks.changed"); | 1924 | postCommand_App("bookmarks.changed"); |
1910 | } | 1925 | } |
1926 | setupSheetTransition_Mobile(editor, iFalse); | ||
1911 | destroy_Widget(editor); | 1927 | destroy_Widget(editor); |
1912 | return iTrue; | 1928 | return iTrue; |
1913 | } | 1929 | } |
@@ -1937,6 +1953,7 @@ iWidget *makeBookmarkCreation_Widget(const iString *url, const iString *title, i | |||
1937 | 1953 | ||
1938 | static iBool handleFeedSettingCommands_(iWidget *dlg, const char *cmd) { | 1954 | static iBool handleFeedSettingCommands_(iWidget *dlg, const char *cmd) { |
1939 | if (equal_Command(cmd, "cancel")) { | 1955 | if (equal_Command(cmd, "cancel")) { |
1956 | setupSheetTransition_Mobile(dlg, iFalse); | ||
1940 | destroy_Widget(dlg); | 1957 | destroy_Widget(dlg); |
1941 | return iTrue; | 1958 | return iTrue; |
1942 | } | 1959 | } |
@@ -1971,6 +1988,7 @@ static iBool handleFeedSettingCommands_(iWidget *dlg, const char *cmd) { | |||
1971 | } | 1988 | } |
1972 | } | 1989 | } |
1973 | postCommand_App("bookmarks.changed"); | 1990 | postCommand_App("bookmarks.changed"); |
1991 | setupSheetTransition_Mobile(dlg, iFalse); | ||
1974 | destroy_Widget(dlg); | 1992 | destroy_Widget(dlg); |
1975 | return iTrue; | 1993 | return iTrue; |
1976 | } | 1994 | } |
@@ -2042,7 +2060,21 @@ iWidget *makeIdentityCreation_Widget(void) { | |||
2042 | page, iClob(new_Widget()), arrangeVertical_WidgetFlag | arrangeSize_WidgetFlag); | 2060 | page, iClob(new_Widget()), arrangeVertical_WidgetFlag | arrangeSize_WidgetFlag); |
2043 | iWidget *values = addChildFlags_Widget( | 2061 | iWidget *values = addChildFlags_Widget( |
2044 | page, iClob(new_Widget()), arrangeVertical_WidgetFlag | arrangeSize_WidgetFlag); | 2062 | page, iClob(new_Widget()), arrangeVertical_WidgetFlag | arrangeSize_WidgetFlag); |
2063 | setId_Widget(headings, "headings"); | ||
2064 | setId_Widget(values, "values"); | ||
2045 | iInputWidget *inputs[6]; | 2065 | iInputWidget *inputs[6]; |
2066 | /* Where will the new identity be active on? */ { | ||
2067 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.newident.scope}"))); | ||
2068 | const iMenuItem items[] = { | ||
2069 | { "${dlg.newident.scope.domain}", 0, 0, "ident.scope arg:0" }, | ||
2070 | { "${dlg.newident.scope.page}", 0, 0, "ident.scope arg:1" }, | ||
2071 | { "${dlg.newident.scope.none}", 0, 0, "ident.scope arg:2" }, | ||
2072 | }; | ||
2073 | setId_Widget(addChild_Widget(values, | ||
2074 | iClob(makeMenuButton_LabelWidget( | ||
2075 | items[0].label, items, iElemCount(items)))), | ||
2076 | "ident.scope"); | ||
2077 | } | ||
2046 | addDialogInputWithHeading_(headings, | 2078 | addDialogInputWithHeading_(headings, |
2047 | values, | 2079 | values, |
2048 | "${dlg.newident.until}", | 2080 | "${dlg.newident.until}", |
@@ -2059,32 +2091,35 @@ iWidget *makeIdentityCreation_Widget(void) { | |||
2059 | setFlags_Widget(tmpGroup, arrangeSize_WidgetFlag | arrangeHorizontal_WidgetFlag, iTrue); | 2091 | setFlags_Widget(tmpGroup, arrangeSize_WidgetFlag | arrangeHorizontal_WidgetFlag, iTrue); |
2060 | addChild_Widget(tmpGroup, iClob(makeToggle_Widget("ident.temp"))); | 2092 | addChild_Widget(tmpGroup, iClob(makeToggle_Widget("ident.temp"))); |
2061 | setId_Widget( | 2093 | setId_Widget( |
2062 | addChildFlags_Widget( | 2094 | addChildFlags_Widget(tmpGroup, |
2063 | tmpGroup, | 2095 | iClob(new_LabelWidget(uiTextCaution_ColorEscape warning_Icon |
2064 | iClob(new_LabelWidget(uiTextCaution_ColorEscape "\u26a0 ${dlg.newident.notsaved}", NULL)), | 2096 | " ${dlg.newident.notsaved}", |
2065 | hidden_WidgetFlag | frameless_WidgetFlag), | 2097 | NULL)), |
2098 | hidden_WidgetFlag | frameless_WidgetFlag), | ||
2066 | "ident.temp.note"); | 2099 | "ident.temp.note"); |
2067 | addChild_Widget(values, iClob(tmpGroup)); | 2100 | addChild_Widget(values, iClob(tmpGroup)); |
2068 | } | 2101 | } |
2069 | addChild_Widget(headings, iClob(makePadding_Widget(gap_UI))); | 2102 | addChildFlags_Widget(headings, iClob(makePadding_Widget(gap_UI)), collapse_WidgetFlag | hidden_WidgetFlag); |
2070 | addChild_Widget(values, iClob(makePadding_Widget(gap_UI))); | 2103 | addChildFlags_Widget(values, iClob(makePadding_Widget(gap_UI)), collapse_WidgetFlag | hidden_WidgetFlag); |
2071 | addDialogInputWithHeading_(headings, values, "${dlg.newident.email}", "ident.email", iClob(inputs[1] = newHint_InputWidget(0, "${hint.newident.optional}"))); | 2104 | addDialogInputWithHeadingAndFlags_(headings, values, "${dlg.newident.email}", "ident.email", iClob(inputs[1] = newHint_InputWidget(0, "${hint.newident.optional}")), collapse_WidgetFlag | hidden_WidgetFlag); |
2072 | addDialogInputWithHeading_(headings, values, "${dlg.newident.userid}", "ident.userid", iClob(inputs[2] = newHint_InputWidget(0, "${hint.newident.optional}"))); | 2105 | addDialogInputWithHeadingAndFlags_(headings, values, "${dlg.newident.userid}", "ident.userid", iClob(inputs[2] = newHint_InputWidget(0, "${hint.newident.optional}")), collapse_WidgetFlag | hidden_WidgetFlag); |
2073 | addDialogInputWithHeading_(headings, values, "${dlg.newident.domain}", "ident.domain", iClob(inputs[3] = newHint_InputWidget(0, "${hint.newident.optional}"))); | 2106 | addDialogInputWithHeadingAndFlags_(headings, values, "${dlg.newident.domain}", "ident.domain", iClob(inputs[3] = newHint_InputWidget(0, "${hint.newident.optional}")), collapse_WidgetFlag | hidden_WidgetFlag); |
2074 | addDialogInputWithHeading_(headings, values, "${dlg.newident.org}", "ident.org", iClob(inputs[4] = newHint_InputWidget(0, "${hint.newident.optional}"))); | 2107 | addDialogInputWithHeadingAndFlags_(headings, values, "${dlg.newident.org}", "ident.org", iClob(inputs[4] = newHint_InputWidget(0, "${hint.newident.optional}")), collapse_WidgetFlag | hidden_WidgetFlag); |
2075 | addDialogInputWithHeading_(headings, values, "${dlg.newident.country}", "ident.country", iClob(inputs[5] = newHint_InputWidget(0, "${hint.newident.optional}"))); | 2108 | addDialogInputWithHeadingAndFlags_(headings, values, "${dlg.newident.country}", "ident.country", iClob(inputs[5] = newHint_InputWidget(0, "${hint.newident.optional}")), collapse_WidgetFlag | hidden_WidgetFlag); |
2076 | arrange_Widget(dlg); | 2109 | arrange_Widget(dlg); |
2077 | for (size_t i = 0; i < iElemCount(inputs); ++i) { | 2110 | for (size_t i = 0; i < iElemCount(inputs); ++i) { |
2078 | as_Widget(inputs[i])->rect.size.x = 100 * gap_UI - headings->rect.size.x; | 2111 | as_Widget(inputs[i])->rect.size.x = 100 * gap_UI - headings->rect.size.x; |
2079 | } | 2112 | } |
2080 | addChild_Widget(dlg, | 2113 | addChild_Widget(dlg, |
2081 | iClob(makeDialogButtons_Widget( | 2114 | iClob(makeDialogButtons_Widget( |
2082 | (iMenuItem[]){ { "${cancel}", 0, 0, NULL }, | 2115 | (iMenuItem[]){ { "${dlg.newident.more}", 0, 0, "ident.showmore" }, |
2116 | { "---", 0, 0, NULL }, | ||
2117 | { "${cancel}", SDLK_ESCAPE, 0, "ident.cancel" }, | ||
2083 | { uiTextAction_ColorEscape "${dlg.newident.create}", | 2118 | { uiTextAction_ColorEscape "${dlg.newident.create}", |
2084 | SDLK_RETURN, | 2119 | SDLK_RETURN, |
2085 | KMOD_PRIMARY, | 2120 | KMOD_PRIMARY, |
2086 | "ident.accept" } }, | 2121 | "ident.accept" } }, |
2087 | 2))); | 2122 | 4))); |
2088 | addChild_Widget(get_Root()->widget, iClob(dlg)); | 2123 | addChild_Widget(get_Root()->widget, iClob(dlg)); |
2089 | finalizeSheet_Mobile(dlg); | 2124 | finalizeSheet_Mobile(dlg); |
2090 | return dlg; | 2125 | return dlg; |