=> 5d247c7fafddcb46d83572af788a04f835d48d42
[1mdiff --git a/po/en.po b/po/en.po[m [1mindex a4b83dcc..cf9643a0 100644[m [1m--- a/po/en.po[m [1m+++ b/po/en.po[m [36m@@ -344,6 +344,9 @@[m [mmsgstr "Go to Parent"[m msgid "menu.root"[m msgstr "Go to Root"[m [m [32m+[m[32mmsgid "menu.home"[m [32m+[m[32mmsgstr "Go Home"[m [32m+[m msgid "menu.reload"[m msgstr "Reload Page"[m [m [36m@@ -1419,6 +1422,15 @@[m [mmsgstr "Load image on scroll:"[m msgid "prefs.hidetoolbarscroll"[m msgstr "Hide toolbar on scroll:"[m [m [32m+[m[32mmsgid "heading.prefs.toolbaractions"[m [32m+[m[32mmsgstr "Toolbar Actions"[m [32m+[m [32m+[m[32mmsgid "prefs.toolbaraction1"[m [32m+[m[32mmsgstr "Button 1"[m [32m+[m [32m+[m[32mmsgid "prefs.toolbaraction2"[m [32m+[m[32mmsgstr "Button 2"[m [32m+[m msgid "prefs.ostheme"[m msgstr "Use system theme:"[m [m [1mdiff --git a/res/lang/cs.bin b/res/lang/cs.bin[m [1mindex bc34d7e8..9069f4b0 100644[m Binary files a/res/lang/cs.bin and b/res/lang/cs.bin differ [1mdiff --git a/res/lang/de.bin b/res/lang/de.bin[m [1mindex 5fb9eb03..62893c64 100644[m Binary files a/res/lang/de.bin and b/res/lang/de.bin differ [1mdiff --git a/res/lang/en.bin b/res/lang/en.bin[m [1mindex 114fa684..12cde1d0 100644[m Binary files a/res/lang/en.bin and b/res/lang/en.bin differ [1mdiff --git a/res/lang/eo.bin b/res/lang/eo.bin[m [1mindex 3d16450c..be6c9cef 100644[m Binary files a/res/lang/eo.bin and b/res/lang/eo.bin differ [1mdiff --git a/res/lang/es.bin b/res/lang/es.bin[m [1mindex fe6bdbb5..feb0b8ea 100644[m Binary files a/res/lang/es.bin and b/res/lang/es.bin differ [1mdiff --git a/res/lang/es_MX.bin b/res/lang/es_MX.bin[m [1mindex c96da0b0..26188c5b 100644[m Binary files a/res/lang/es_MX.bin and b/res/lang/es_MX.bin differ [1mdiff --git a/res/lang/fi.bin b/res/lang/fi.bin[m [1mindex d06dfc9c..86efb862 100644[m Binary files a/res/lang/fi.bin and b/res/lang/fi.bin differ [1mdiff --git a/res/lang/fr.bin b/res/lang/fr.bin[m [1mindex 4cda45d8..e6977fd9 100644[m Binary files a/res/lang/fr.bin and b/res/lang/fr.bin differ [1mdiff --git a/res/lang/gl.bin b/res/lang/gl.bin[m [1mindex 7ffb40ec..f282366d 100644[m Binary files a/res/lang/gl.bin and b/res/lang/gl.bin differ [1mdiff --git a/res/lang/hu.bin b/res/lang/hu.bin[m [1mindex e698c7ac..3ca7ee30 100644[m Binary files a/res/lang/hu.bin and b/res/lang/hu.bin differ [1mdiff --git a/res/lang/ia.bin b/res/lang/ia.bin[m [1mindex f951f0c5..29faea06 100644[m Binary files a/res/lang/ia.bin and b/res/lang/ia.bin differ [1mdiff --git a/res/lang/ie.bin b/res/lang/ie.bin[m [1mindex c4671e06..9c8bc9bd 100644[m Binary files a/res/lang/ie.bin and b/res/lang/ie.bin differ [1mdiff --git a/res/lang/isv.bin b/res/lang/isv.bin[m [1mindex 2788dc3f..4414fdb3 100644[m Binary files a/res/lang/isv.bin and b/res/lang/isv.bin differ [1mdiff --git a/res/lang/pl.bin b/res/lang/pl.bin[m [1mindex 29260245..aae2b705 100644[m Binary files a/res/lang/pl.bin and b/res/lang/pl.bin differ [1mdiff --git a/res/lang/ru.bin b/res/lang/ru.bin[m [1mindex 712d8a01..1166b064 100644[m Binary files a/res/lang/ru.bin and b/res/lang/ru.bin differ [1mdiff --git a/res/lang/sk.bin b/res/lang/sk.bin[m [1mindex 79b1208f..b43f885c 100644[m Binary files a/res/lang/sk.bin and b/res/lang/sk.bin differ [1mdiff --git a/res/lang/sr.bin b/res/lang/sr.bin[m [1mindex 79e76d20..eec114aa 100644[m Binary files a/res/lang/sr.bin and b/res/lang/sr.bin differ [1mdiff --git a/res/lang/tok.bin b/res/lang/tok.bin[m [1mindex 31f9536e..0202545c 100644[m Binary files a/res/lang/tok.bin and b/res/lang/tok.bin differ [1mdiff --git a/res/lang/tr.bin b/res/lang/tr.bin[m [1mindex 758dba68..95bdffdc 100644[m Binary files a/res/lang/tr.bin and b/res/lang/tr.bin differ [1mdiff --git a/res/lang/uk.bin b/res/lang/uk.bin[m [1mindex 6aedfe5f..e222a609 100644[m Binary files a/res/lang/uk.bin and b/res/lang/uk.bin differ [1mdiff --git a/res/lang/zh_Hans.bin b/res/lang/zh_Hans.bin[m [1mindex 036ecca3..648016a8 100644[m Binary files a/res/lang/zh_Hans.bin and b/res/lang/zh_Hans.bin differ [1mdiff --git a/res/lang/zh_Hant.bin b/res/lang/zh_Hant.bin[m [1mindex d2aa482d..daa31717 100644[m Binary files a/res/lang/zh_Hant.bin and b/res/lang/zh_Hant.bin differ [1mdiff --git a/src/app.c b/src/app.c[m [1mindex 58eecf51..1e66c6cf 100644[m [1m--- a/src/app.c[m [1m+++ b/src/app.c[m [36m@@ -248,6 +248,10 @@[m [mstatic iString *serializePrefs_App_(const iApp *d) {[m appendFormat_String(str, "linewidth.set arg:%d\n", d->prefs.lineWidth);[m appendFormat_String(str, "linespacing.set arg:%f\n", d->prefs.lineSpacing);[m appendFormat_String(str, "returnkey.set arg:%d\n", d->prefs.returnKey);[m [32m+[m[32m#if defined (iPlatformMobile)[m [32m+[m[32m appendFormat_String(str, "toolbar.action.set arg:%d button:0\n", d->prefs.toolbarActions[0]);[m [32m+[m[32m appendFormat_String(str, "toolbar.action.set arg:%d button:1\n", d->prefs.toolbarActions[1]);[m [32m+[m[32m#endif[m iConstForEach(StringSet, fp, d->prefs.disabledFontPacks) {[m appendFormat_String(str, "fontpack.disable id:%s\n", cstr_String(fp.value));[m }[m [36m@@ -1870,6 +1874,12 @@[m [mstatic void updatePrefsPinSplitButtons_(iWidget *d, int value) {[m }[m }[m [m [32m+[m[32mstatic void updatePrefsToolBarActionButton_(iWidget *prefs, int buttonIndex, int action) {[m [32m+[m[32m updateDropdownSelection_LabelWidget([m [32m+[m[32m findChild_Widget(prefs, format_CStr("prefs.toolbaraction%d", buttonIndex + 1)),[m [32m+[m[32m format_CStr(" arg:%d button:%d", action, buttonIndex));[m[41m [m [32m+[m[32m}[m [32m+[m static void updateScrollSpeedButtons_(iWidget *d, enum iScrollType type, const int value) {[m const char *typeStr = (type == mouse_ScrollType ? "mouse" : "keyboard");[m for (int i = 0; i <= 40; i++) {[m [36m@@ -1960,6 +1970,10 @@[m [mstatic iBool handlePrefsCommands_(iWidget *d, const char *cmd) {[m format_CStr("returnkey.set arg:%d", arg_Command(cmd)));[m return iFalse;[m }[m [32m+[m[32m else if (equal_Command(cmd, "toolbar.action.set")) {[m [32m+[m[32m updatePrefsToolBarActionButton_(d, argLabel_Command(cmd, "button"), arg_Command(cmd));[m [32m+[m[32m return iFalse;[m [32m+[m[32m }[m else if (equal_Command(cmd, "pinsplit.set")) {[m updatePrefsPinSplitButtons_(d, arg_Command(cmd));[m return iFalse;[m [36m@@ -2268,6 +2282,12 @@[m [miBool handleCommand_App(const char *cmd) {[m }[m return iTrue;[m }[m [32m+[m[32m else if (equal_Command(cmd, "toolbar.action.set")) {[m [32m+[m[32m d->prefs.toolbarActions[iClamp(argLabel_Command(cmd, "button"), 0, 1)] =[m [32m+[m[32m iClamp(arg_Command(cmd), 0, max_ToolbarAction - 1);[m [32m+[m[32m postCommand_App("~toolbar.actions.changed");[m [32m+[m[32m return iTrue;[m[41m [m [32m+[m[32m }[m else if (equal_Command(cmd, "translation.languages")) {[m d->prefs.langFrom = argLabel_Command(cmd, "from");[m d->prefs.langTo = argLabel_Command(cmd, "to");[m [36m@@ -3006,6 +3026,8 @@[m [miBool handleCommand_App(const char *cmd) {[m updateDropdownSelection_LabelWidget([m findChild_Widget(dlg, "prefs.returnkey"),[m format_CStr("returnkey.set arg:%d", d->prefs.returnKey));[m [32m+[m[32m updatePrefsToolBarActionButton_(dlg, 0, d->prefs.toolbarActions[0]);[m [32m+[m[32m updatePrefsToolBarActionButton_(dlg, 1, d->prefs.toolbarActions[1]);[m setToggle_Widget(findChild_Widget(dlg, "prefs.retainwindow"), d->prefs.retainWindowSize);[m setText_InputWidget(findChild_Widget(dlg, "prefs.uiscale"),[m collectNewFormat_String("%g", uiScale_Window(as_Window(d->window))));[m [1mdiff --git a/src/defs.h b/src/defs.h[m [1mindex 9a466674..25c0ceeb 100644[m [1m--- a/src/defs.h[m [1m+++ b/src/defs.h[m [36m@@ -66,6 +66,23 @@[m [menum iReturnKeyFlag {[m accept_ReturnKeyFlag = 4, /* shift */[m };[m [m [32m+[m[32menum iToolbarAction {[m [32m+[m[32m back_ToolbarAction = 0,[m [32m+[m[32m forward_ToolbarAction = 1,[m [32m+[m[32m home_ToolbarAction = 2,[m [32m+[m[32m parent_ToolbarAction = 3,[m [32m+[m[32m reload_ToolbarAction = 4,[m [32m+[m[32m newTab_ToolbarAction = 5,[m [32m+[m[32m closeTab_ToolbarAction = 6,[m [32m+[m[32m addBookmark_ToolbarAction = 7,[m [32m+[m[32m translate_ToolbarAction = 8,[m [32m+[m[32m upload_ToolbarAction = 9,[m [32m+[m[32m editPage_ToolbarAction = 10,[m [32m+[m[32m findText_ToolbarAction = 11,[m [32m+[m[32m settings_ToolbarAction = 12,[m [32m+[m[32m max_ToolbarAction[m [32m+[m[32m};[m [32m+[m /* Return key behavior is not handled via normal bindings because only certain combinations[m are valid. */[m enum iReturnKeyBehavior {[m [1mdiff --git a/src/prefs.c b/src/prefs.c[m [1mindex 6b0164b6..426b7212 100644[m [1m--- a/src/prefs.c[m [1m+++ b/src/prefs.c[m [36m@@ -44,6 +44,8 @@[m [mvoid init_Prefs(iPrefs *d) {[m d->uiAnimations = iTrue;[m d->uiScale = 1.0f; /* default set elsewhere */[m d->zoomPercent = 100;[m [32m+[m[32m d->toolbarActions[0] = back_ToolbarAction;[m [32m+[m[32m d->toolbarActions[1] = forward_ToolbarAction;[m d->sideIcon = iTrue;[m d->hideToolbarOnScroll = iTrue;[m d->blinkingCursor = iTrue;[m [1mdiff --git a/src/prefs.h b/src/prefs.h[m [1mindex 6c79a3e1..43f7fc0e 100644[m [1m--- a/src/prefs.h[m [1m+++ b/src/prefs.h[m [36m@@ -159,6 +159,7 @@[m [mstruct Impl_Prefs {[m enum iColorAccent accent;[m /* Window and User Interface */[m float uiScale;[m [32m+[m[32m enum iToolbarAction toolbarActions[2];[m /* Document presentation */[m int zoomPercent;[m /* Behavior */[m [1mdiff --git a/src/ui/mobile.c b/src/ui/mobile.c[m [1mindex 08d8dba2..e34cad3a 100644[m [1m--- a/src/ui/mobile.c[m [1m+++ b/src/ui/mobile.c[m [36m@@ -37,6 +37,22 @@[m [mSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */[m # include "ios.h"[m #endif[m [m [32m+[m[32mconst iToolbarActionSpec toolbarActions_Mobile[max_ToolbarAction] = {[m [32m+[m[32m { backArrow_Icon, "${menu.back}", "navigate.back" },[m [32m+[m[32m { forwardArrow_Icon, "${menu.forward}", "navigate.forward" },[m [32m+[m[32m { home_Icon, "${menu.home}", "navigate.home" },[m [32m+[m[32m { upArrow_Icon, "${menu.parent}", "navigate.parent" },[m [32m+[m[32m { reload_Icon, "${menu.reload}", "navigate.reload" },[m [32m+[m[32m { openTab_Icon, "${menu.newtab}", "tabs.new" },[m [32m+[m[32m { close_Icon, "${menu.closetab}", "tabs.close" },[m [32m+[m[32m { bookmark_Icon, "${menu.page.bookmark}", "bookmark.add" },[m [32m+[m[32m { globe_Icon, "${menu.page.translate}", "document.translate" },[m [32m+[m[32m { upload_Icon, "${menu.page.upload}", "document.upload" },[m [32m+[m[32m { edit_Icon, "${menu.page.upload.edit}", "document.upload copy:1" },[m [32m+[m[32m { magnifyingGlass_Icon, "${menu.find}", "focus.set id:find.input" },[m [32m+[m[32m { gear_Icon, "${menu.settings}", "preferences" },[m[41m [m [32m+[m[32m};[m [32m+[m iBool isUsingPanelLayout_Mobile(void) {[m return deviceType_App() != desktop_AppDeviceType;[m }[m [1mdiff --git a/src/ui/mobile.h b/src/ui/mobile.h[m [1mindex 54f55fd2..c19623f9 100644[m [1m--- a/src/ui/mobile.h[m [1m+++ b/src/ui/mobile.h[m [36m@@ -22,8 +22,19 @@[m [mSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */[m [m #pragma once[m [m [32m+[m[32m#include "defs.h"[m #include[m [m [32m+[m[32miDeclareType(ToolbarActionSpec)[m [32m+[m[41m [m [32m+[m[32mstruct Impl_ToolbarActionSpec {[m [32m+[m[32m const char *icon;[m [32m+[m[32m const char *label;[m [32m+[m[32m const char *command;[m [32m+[m[32m};[m [32m+[m [32m+[m[32mconst iToolbarActionSpec toolbarActions_Mobile[max_ToolbarAction];[m [32m+[m iDeclareType(Widget)[m iDeclareType(MenuItem)[m [m [1mdiff --git a/src/ui/root.c b/src/ui/root.c[m [1mindex bc2bc0fb..31176115 100644[m [1m--- a/src/ui/root.c[m [1m+++ b/src/ui/root.c[m [36m@@ -592,14 +592,21 @@[m [mstatic void updateNavBarIdentity_(iWidget *navBar) {[m [m static void updateNavDirButtons_(iWidget *navBar) {[m const iHistory *history = history_DocumentWidget(document_App());[m [31m- const iBool atOldest = atOldest_History(history);[m [31m- const iBool atNewest = atNewest_History(history);[m [32m+[m[32m iBool atOldest = atOldest_History(history);[m [32m+[m[32m iBool atNewest = atNewest_History(history);[m setFlags_Widget(findChild_Widget(navBar, "navbar.back"), disabled_WidgetFlag, atOldest);[m setFlags_Widget(findChild_Widget(navBar, "navbar.forward"), disabled_WidgetFlag, atNewest);[m iWidget *toolBar = findWidget_App("toolbar");[m if (toolBar) {[m [31m- iLabelWidget *back = findChild_Widget(toolBar, "toolbar.back");[m [31m- iLabelWidget *fwd = findChild_Widget(toolBar, "toolbar.forward");[m [32m+[m[32m /* Reset the state. */[m [32m+[m[32m for (int i = 0; i < 2; i++) {[m [32m+[m[32m const char *id = (i == 0 ? "toolbar.action1" : "toolbar.action2");[m[41m [m [32m+[m[32m setFlags_Widget(findChild_Widget(toolBar, id), disabled_WidgetFlag, iFalse);[m [32m+[m[32m setOutline_LabelWidget(findChild_Widget(toolBar, id), iFalse);[m [32m+[m[32m }[m [32m+[m[32m /* Disable certain actions. */[m [32m+[m[32m iLabelWidget *back = findMenuItem_Widget(toolBar, "navigate.back");[m [32m+[m[32m iLabelWidget *fwd = findMenuItem_Widget(toolBar, "navigate.forward");[m setFlags_Widget(as_Widget(back), disabled_WidgetFlag, atOldest);[m setOutline_LabelWidget(back, atOldest);[m setFlags_Widget(as_Widget(fwd), disabled_WidgetFlag, atNewest);[m [36m@@ -1062,14 +1069,23 @@[m [mstatic iBool handleSearchBarCommands_(iWidget *searchBar, const char *cmd) {[m }[m [m #if defined (iPlatformMobile)[m [31m-static void dismissSidebar_(iWidget *sidebar, const char *toolButtonId) {[m [31m- if (isVisible_Widget(sidebar)) {[m [31m- postCommandf_App("%s.toggle", cstr_String(id_Widget(sidebar)));[m [31m-// if (toolButtonId) {[m [31m- // setFlags_Widget(findWidget_App(toolButtonId), noBackground_WidgetFlag, iTrue);[m [31m-// }[m [31m- setVisualOffset_Widget(sidebar, height_Widget(sidebar), 250, easeIn_AnimFlag);[m [32m+[m [32m+[m[32mstatic void updateToolBarActions_(iWidget *toolBar) {[m [32m+[m[32m const iPrefs *prefs = prefs_App();[m [32m+[m[32m for (int i = 0; i < 2; i++) {[m [32m+[m[32m int action = prefs->toolbarActions[i][m [32m+[m[32m ? prefs->toolbarActions[i][m [32m+[m[32m : (i == 0 ? back_ToolbarAction : forward_ToolbarAction);[m [32m+[m[32m iLabelWidget *button =[m [32m+[m[32m findChild_Widget(toolBar, i == 0 ? "toolbar.action1" : "toolbar.action2");[m [32m+[m[32m if (button) {[m [32m+[m[32m setFlags_Widget(as_Widget(button), disabled_WidgetFlag, iFalse);[m [32m+[m[32m setOutline_LabelWidget(button, iFalse);[m [32m+[m[32m updateTextCStr_LabelWidget(button, toolbarActions_Mobile[action].icon);[m [32m+[m[32m setCommand_LabelWidget(button, collectNewCStr_String(toolbarActions_Mobile[action].command));[m [32m+[m[32m }[m }[m [32m+[m[32m refresh_Widget(toolBar);[m }[m [m static iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) {[m [36m@@ -1081,13 +1097,6 @@[m [mstatic iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) {[m return iTrue;[m }[m else if (equal_Command(cmd, "toolbar.showview")) {[m [31m- /* TODO: Clean this up. */[m [31m-// iWidget *sidebar = findWidget_App("sidebar");[m [31m-// iWidget *sidebar2 = findWidget_App("sidebar2");[m [31m-// dismissSidebar_(sidebar2, "toolbar.ident");[m [31m-// const iBool isVisible = isVisible_Widget(sidebar);[m [31m- /* If a sidebar hasn't been shown yet, it's height is zero. */[m [31m-// const int viewHeight = size_Root(get_Root()).y;[m if (arg_Command(cmd) >= 0) {[m postCommandf_App("sidebar.mode arg:%d show:1", arg_Command(cmd));[m }[m [36m@@ -1102,29 +1111,6 @@[m [mstatic iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) {[m postCommandf_App("sidebar.toggle");[m }[m postCommand_App("preferences idents:1");[m [31m-#if 0[m [31m- /* TODO: Clean this up. */[m [31m- iWidget *sidebar2 = findWidget_App("sidebar2");[m [31m- //dismissSidebar_(sidebar, "toolbar.view");[m [31m- if (isVisible_Widget(sidebar)) {[m [31m- postCommandf_App("sidebar.toggle");[m [31m- }[m [31m- const iBool isVisible = isVisible_Widget(sidebar2);[m [31m- // setFlags_Widget(findChild_Widget(toolBar, "toolbar.ident"), noBackground_WidgetFlag,[m [31m- // isVisible);[m [31m- /* If a sidebar hasn't been shown yet, it's height is zero. */[m [31m- const int viewHeight = size_Root(get_Root()).y;[m [31m- if (isVisible) {[m [31m- dismissSidebar_(sidebar2, NULL);[m [31m- }[m [31m- else {[m [31m- postCommand_App("sidebar2.mode arg:3 show:1");[m [31m- int offset = height_Widget(sidebar2);[m [31m- if (offset == 0) offset = size_Root(get_Root()).y;[m [31m- setVisualOffset_Widget(sidebar2, offset, 0, 0);[m [31m- setVisualOffset_Widget(sidebar2, 0, 400, easeOut_AnimFlag | softer_AnimFlag);[m [31m- }[m [31m-#endif[m return iTrue;[m }[m else if (equal_Command(cmd, "sidebar.mode.changed")) {[m [36m@@ -1132,8 +1118,13 @@[m [mstatic iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) {[m updateTextCStr_LabelWidget(viewTool, icon_SidebarMode(arg_Command(cmd)));[m return iFalse;[m }[m [32m+[m[32m else if (equal_Command(cmd, "toolbar.actions.changed")) {[m [32m+[m[32m updateToolBarActions_(toolBar);[m [32m+[m[32m return iFalse;[m[41m [m [32m+[m[32m }[m return iFalse;[m }[m [32m+[m #endif /* defined (iPlatformMobile) */[m [m static iLabelWidget *newLargeIcon_LabelWidget(const char *text, const char *cmd) {[m [36m@@ -1552,14 +1543,14 @@[m [mvoid createUserInterface_Root(iRoot *d) {[m "toolbar.close");[m #else[m setId_Widget(addChildFlags_Widget(toolBar,[m [31m- iClob(newLargeIcon_LabelWidget(backArrow_Icon, "navigate.back")),[m [32m+[m[32m iClob(newLargeIcon_LabelWidget("", "...")),[m frameless_WidgetFlag),[m [31m- "toolbar.back");[m [32m+[m[32m "toolbar.action1");[m #endif[m setId_Widget(addChildFlags_Widget(toolBar,[m [31m- iClob(newLargeIcon_LabelWidget(forwardArrow_Icon, "navigate.forward")),[m [32m+[m[32m iClob(newLargeIcon_LabelWidget("", "...")),[m frameless_WidgetFlag),[m [31m- "toolbar.forward");[m [32m+[m[32m "toolbar.action2");[m iWidget *identButton;[m setId_Widget(identButton = addChildFlags_Widget([m toolBar,[m [36m@@ -1589,10 +1580,10 @@[m [mvoid createUserInterface_Root(iRoot *d) {[m setId_Widget(as_Widget(menuButton), "toolbar.navmenu");[m addChildFlags_Widget(toolBar, iClob(menuButton), frameless_WidgetFlag);[m iForEach(ObjectList, i, children_Widget(toolBar)) {[m [31m- iLabelWidget *btn = i.object;[m setFlags_Widget(i.object, noBackground_WidgetFlag, iTrue);[m }[m updateToolbarColors_Root(d);[m [32m+[m[32m updateToolBarActions_(toolBar);[m const iMenuItem items[] = {[m { book_Icon " ${sidebar.bookmarks}", 0, 0, "toolbar.showview arg:0" },[m { star_Icon " ${sidebar.feeds}", 0, 0, "toolbar.showview arg:1" },[m [1mdiff --git a/src/ui/util.c b/src/ui/util.c[m [1mindex ab7e9ebf..6add5c89 100644[m [1m--- a/src/ui/util.c[m [1m+++ b/src/ui/util.c[m [36m@@ -2383,6 +2383,15 @@[m [miWidget *makePreferences_Widget(void) {[m format_CStr("returnkey.set arg:%d", acceptWithPrimaryMod_ReturnKeyBehavior) },[m { NULL }[m };[m [32m+[m[32m iMenuItem toolbarActionItems[2][max_ToolbarAction + 1];[m [32m+[m[32m iZap(toolbarActionItems);[m [32m+[m[32m for (int j = 0; j < 2; j++) {[m [32m+[m[32m for (int i = 0; i < max_ToolbarAction; i++) {[m [32m+[m[32m toolbarActionItems[j][i].label = toolbarActions_Mobile[i].label;[m [32m+[m[32m toolbarActionItems[j][i].command =[m [32m+[m[32m format_CStr("toolbar.action.set arg:%d button:%d", i, j);[m [32m+[m[32m }[m [32m+[m[32m }[m iMenuItem docThemes[2][max_GmDocumentTheme + 1];[m for (int i = 0; i < 2; ++i) {[m const iBool isDark = (i == 0);[m [36m@@ -2476,8 +2485,10 @@[m [miWidget *makePreferences_Widget(void) {[m { "title id:heading.prefs.interface" },[m { "dropdown device:0 id:prefs.returnkey", 0, 0, (const void *) returnKeyBehaviors },[m { "padding device:1" },[m [31m- //{ "toggle id:prefs.hoverlink" },[m { "toggle device:2 id:prefs.hidetoolbarscroll" },[m [32m+[m[32m { "heading device:2 id:heading.prefs.toolbaractions" },[m [32m+[m[32m { "dropdown device:2 id:prefs.toolbaraction1", 0, 0, (const void *) toolbarActionItems[0] },[m [32m+[m[32m { "dropdown device:2 id:prefs.toolbaraction2", 0, 0, (const void *) toolbarActionItems[1] },[m { "heading id:heading.prefs.sizing" },[m { "input id:prefs.uiscale maxlen:8" },[m { NULL }[m
text/gemini; charset=utf-8
This content has been proxied by September (ba2dc).