diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2020-09-18 23:50:28 +0300 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2020-09-18 23:50:28 +0300 |
commit | 01b09cc3cf3cd25396c53e184563fbfdab74f8e7 (patch) | |
tree | 5da0135101930e2c992ce7616087b495d9e63434 /src/app.c | |
parent | 35a40515d7bfef700ed7680b07112ef5d5fa35b2 (diff) |
Home button opens a random "homepage" bookmark
Diffstat (limited to 'src/app.c')
-rw-r--r-- | src/app.c | 25 |
1 files changed, 22 insertions, 3 deletions
@@ -912,11 +912,30 @@ iBool handleCommand_App(const char *cmd) { | |||
912 | setText_InputWidget(findChild_Widget(dlg, "prefs.proxy.gopher"), | 912 | setText_InputWidget(findChild_Widget(dlg, "prefs.proxy.gopher"), |
913 | schemeProxy_App(range_CStr("gopher"))); | 913 | schemeProxy_App(range_CStr("gopher"))); |
914 | setCommandHandler_Widget(dlg, handlePrefsCommands_); | 914 | setCommandHandler_Widget(dlg, handlePrefsCommands_); |
915 | postCommand_App("focus.set id:prefs.downloads"); | ||
916 | } | 915 | } |
917 | else if (equal_Command(cmd, "navigate.home")) { | 916 | else if (equal_Command(cmd, "navigate.home")) { |
918 | /* TODO: Look for bookmarks tagged homepage, or use the URL set in Preferences. */ | 917 | /* Look for bookmarks tagged "homepage". */ |
919 | postCommand_App("open url:about:lagrange"); | 918 | iRegExp *pattern = iClob(new_RegExp("\\bhomepage\\b", caseInsensitive_RegExpOption)); |
919 | const iPtrArray *homepages = | ||
920 | list_Bookmarks(d->bookmarks, NULL, filterTagsRegExp_Bookmarks, pattern); | ||
921 | if (isEmpty_PtrArray(homepages)) { | ||
922 | postCommand_App("open url:about:lagrange"); | ||
923 | } | ||
924 | else { | ||
925 | iStringSet *urls = iClob(new_StringSet()); | ||
926 | iConstForEach(PtrArray, i, homepages) { | ||
927 | const iBookmark *bm = i.ptr; | ||
928 | /* Try to switch to a different bookmark. */ | ||
929 | if (cmpStringCase_String(url_DocumentWidget(document_App()), &bm->url)) { | ||
930 | insert_StringSet(urls, &bm->url); | ||
931 | } | ||
932 | } | ||
933 | if (!isEmpty_StringSet(urls)) { | ||
934 | postCommandf_App( | ||
935 | "open url:%s", | ||
936 | cstr_String(constAt_StringSet(urls, iRandoms(0, size_StringSet(urls))))); | ||
937 | } | ||
938 | } | ||
920 | return iTrue; | 939 | return iTrue; |
921 | } | 940 | } |
922 | else if (equal_Command(cmd, "zoom.set")) { | 941 | else if (equal_Command(cmd, "zoom.set")) { |