From 964b9f752f086f58a6aae2602e83b30833412199 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Mon, 11 Jan 2021 08:31:11 +0200 Subject: Opening link in new tab via home row keys Added a new keybinding for opening links via keyboard in new tab. The default binding is Shift+F. The H key is now used for setting the hover link. --- src/ui/documentwidget.c | 8 +++++++- src/ui/keys.c | 5 +++-- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c index 3373771d..8f2fc437 100644 --- a/src/ui/documentwidget.c +++ b/src/ui/documentwidget.c @@ -132,6 +132,7 @@ enum iDocumentWidgetFlag { noHoverWhileScrolling_DocumentWidgetFlag = iBit(2), showLinkNumbers_DocumentWidgetFlag = iBit(3), setHoverViaKeys_DocumentWidgetFlag = iBit(4), + newTabViaHomeKeys_DocumentWidgetFlag = iBit(5), }; enum iDocumentLinkOrdinalMode { @@ -1789,6 +1790,8 @@ static iBool handleCommand_DocumentWidget_(iDocumentWidget *d, const char *cmd) iChangeFlags(d->flags, showLinkNumbers_DocumentWidgetFlag, iTrue); iChangeFlags(d->flags, setHoverViaKeys_DocumentWidgetFlag, argLabel_Command(cmd, "hover") != 0); + iChangeFlags(d->flags, newTabViaHomeKeys_DocumentWidgetFlag, + argLabel_Command(cmd, "newtab") != 0); } invalidateVisibleLinks_DocumentWidget_(d); refresh_Widget(d); @@ -2203,7 +2206,10 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e } else { postCommandf_App("open newtab:%d url:%s", - openTabMode_Sym(SDL_GetModState()), + d->ordinalMode == + numbersAndAlphabet_DocumentLinkOrdinalMode + ? openTabMode_Sym(SDL_GetModState()) + : (d->flags & newTabViaHomeKeys_DocumentWidgetFlag ? 1 : 0), cstr_String(absoluteUrl_String( d->mod.url, linkUrl_GmDocument(d->doc, run->linkId)))); } diff --git a/src/ui/keys.c b/src/ui/keys.c index 941dda54..a4e5c6fc 100644 --- a/src/ui/keys.c +++ b/src/ui/keys.c @@ -75,9 +75,10 @@ static const struct { int id; iMenuItem bind; int flags; } defaultBindings_[] = { 32, { "Go to parent directory", navigateParent_KeyShortcut, "navigate.parent" }, 0 }, { 33, { "Go to site root", navigateRoot_KeyShortcut, "navigate.root" }, 0 }, { 35, { "Reload page", reload_KeyShortcut, "document.reload" }, 0 }, - { 40, { "Open link via home row keys", 'f', 0, "document.linkkeys arg:1" }, 0 }, { 41, { "Open link via modifier key", SDLK_LALT, 0, "document.linkkeys arg:0" }, argRelease_BindFlag }, - { 45, { "Hover on link via home row keys", 'f', KMOD_SHIFT, "document.linkkeys arg:1 hover:1" }, 0 }, + { 42, { "Open link via home row keys", 'f', 0, "document.linkkeys arg:1" }, 0 }, + { 45, { "Open link in new tab via home row keys", 'f', KMOD_SHIFT, "document.linkkeys arg:1 newtab:1" }, 0 }, + { 46, { "Hover on link via home row keys", 'h', 0, "document.linkkeys arg:1 hover:1" }, 0 }, { 70, { "Zoom in", SDLK_EQUALS, KMOD_PRIMARY, "zoom.delta arg:10" }, 0 }, { 71, { "Zoom out", SDLK_MINUS, KMOD_PRIMARY, "zoom.delta arg:-10" }, 0 }, { 72, { "Reset zoom", SDLK_0, KMOD_PRIMARY, "zoom.set arg:100" }, 0 }, -- cgit v1.2.3