summaryrefslogtreecommitdiff
path: root/src/ui/util.c
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2021-06-09 19:01:15 +0300
committerJaakko Keränen <jaakko.keranen@iki.fi>2021-06-09 19:01:15 +0300
commitf63ed76597b462c60b3a6ad89f8c165ffb87d00c (patch)
tree2aca3537930bce28acff14c0cee0a11fa1988661 /src/ui/util.c
parent5f9685010addd4a0f04c13f889856084381dd1c6 (diff)
parentee17ef3d0135027fbc4ff816dd9e793b4bb0b883 (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.c67
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
1550static void addDialogInputWithHeading_(iWidget *headings, iWidget *values, const char *labelText, 1555static 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
1572static 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
1565iInputWidget *addTwoColumnDialogInputField_Widget(iWidget *headings, iWidget *values, 1577iInputWidget *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
1938static iBool handleFeedSettingCommands_(iWidget *dlg, const char *cmd) { 1954static 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;