Lagrange [release]

SidebarWidget: Opening feed entries in new tab

4d6c1a52a06ff480291a8192dd0f69f13be3513f
diff --git a/res/about/version.gmi b/res/about/version.gmi
index a81dcfa9..39b8e095 100644
--- a/res/about/version.gmi
+++ b/res/about/version.gmi
@@ -7,6 +7,7 @@
 # Release notes
 
 ## 1.0.2
+* Fixed opening sidebar feed entries in new/background tab with modifier keys.
 * Fixed editing identity notes. The entered new notes were not being applied.
 
 ## 1.0.1
diff --git a/src/gmutil.c b/src/gmutil.c
index afca4978..cf96cfd8 100644
--- a/src/gmutil.c
+++ b/src/gmutil.c
@@ -315,7 +315,7 @@ void urlEncodeSpaces_String(iString *d) {
     }
 }
 
-const iString *feedEntryOpenCommand_String(const iString *url) {
+const iString *feedEntryOpenCommand_String(const iString *url, int newTab) {
     if (!isEmpty_String(url)) {
         iString *cmd = collectNew_String();
         const size_t fragPos = indexOf_String(url, '#');
@@ -323,14 +323,15 @@ const iString *feedEntryOpenCommand_String(const iString *url) {
             iString *head = newRange_String(
                 (iRangecc){ constBegin_String(url) + fragPos + 1, constEnd_String(url) });
             format_String(cmd,
-                          "open gotourlheading:%s url:%s",
+                          "open newtab:%d gotourlheading:%s url:%s",
+                          newTab,
                           cstr_String(head),
                           cstr_Rangecc((iRangecc){ constBegin_String(url),
                                                    constBegin_String(url) + fragPos }));
             delete_String(head);
         }
         else {
-            format_String(cmd, "open url:%s", cstr_String(url));
+            format_String(cmd, "open newtab:%d url:%s", newTab, cstr_String(url));
         }
         return cmd;
     }
diff --git a/src/gmutil.h b/src/gmutil.h
index 88ed1f32..a9c8c42a 100644
--- a/src/gmutil.h
+++ b/src/gmutil.h
@@ -110,4 +110,4 @@ iString *       makeFileUrl_String      (const iString *localFilePath);
 const char *    makeFileUrl_CStr        (const char *localFilePath);
 void            urlEncodeSpaces_String  (iString *);
 
-const iString * feedEntryOpenCommand_String (const iString *url); /* checks fragment */
+const iString * feedEntryOpenCommand_String (const iString *url, int newTab); /* checks fragment */
diff --git a/src/ui/lookupwidget.c b/src/ui/lookupwidget.c
index b80170d2..284d518e 100644
--- a/src/ui/lookupwidget.c
+++ b/src/ui/lookupwidget.c
@@ -535,7 +535,7 @@ static void presentResults_LookupWidget_(iLookupWidget *d) {
                               cstr_String(&res->label),
                               uiText_ColorEscape,
                               cstr_String(&res->meta));
-                const iString *cmd = feedEntryOpenCommand_String(&res->url);
+                const iString *cmd = feedEntryOpenCommand_String(&res->url, 0);
                 if (cmd) {
                     set_String(&item->command, cmd);
                 }
diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c
index 406ce2f2..d3be3710 100644
--- a/src/ui/sidebarwidget.c
+++ b/src/ui/sidebarwidget.c
@@ -524,7 +524,8 @@ static void itemClicked_SidebarWidget_(iSidebarWidget *d, const iSidebarItem *it
             break;
         }
         case feeds_SidebarMode: {
-            postCommandString_App(feedEntryOpenCommand_String(&item->url));
+            postCommandString_App(
+                feedEntryOpenCommand_String(&item->url, openTabMode_Sym(SDL_GetModState())));
             break;
         }
         case bookmarks_SidebarMode: