diff --git a/client/js/templates/EntriesPage.jsx b/client/js/templates/EntriesPage.jsx
index 79a0ffdc3e..17e7c7d478 100644
--- a/client/js/templates/EntriesPage.jsx
+++ b/client/js/templates/EntriesPage.jsx
@@ -144,18 +144,13 @@ function reloadList({
* @param {number} selected
*/
function openSelectedArticle(selected) {
- const link = document.querySelector(`.entry[data-entry-id="${selected}"] .entry-datetime`);
+ const link = document.querySelector(`.entry[data-entry-id="${selected}"] .entry-newwindow`);
if (selfoss.config.openInBackgroundTab) {
// In Chromium, this will just cause the tab to open in the foreground.
// Appears to be disallowed by the pop-under prevention:
// https://crbug.com/431335
// https://crbug.com/487919
- const event = new MouseEvent(
- 'click',
- {
- ctrlKey: true,
- }
- );
+ const event = new MouseEvent('click', { ctrlKey: true, bubbles: true});
link.dispatchEvent(event);
} else {
// open item in new window
diff --git a/client/js/templates/Item.jsx b/client/js/templates/Item.jsx
index e268fc5ff4..e01aeecce9 100644
--- a/client/js/templates/Item.jsx
+++ b/client/js/templates/Item.jsx
@@ -46,10 +46,6 @@ function setupLightbox({
}));
}
-function stopPropagation(event) {
- event.stopPropagation();
-}
-
function lazyLoadImages(content) {
content.querySelectorAll('img').forEach((img) => {
img.setAttribute('src', img.getAttribute('data-selfoss-src'));
@@ -257,6 +253,8 @@ export default function Item({ currentTime, item, selected, expanded, setNavExpa
[currentTime, item.datetime]
);
+ const canWrite = useAllowedToWrite();
+
const previouslyExpanded = usePreviousImmediate(expanded);
const configuration = useContext(ConfigurationContext);
@@ -387,6 +385,17 @@ export default function Item({ currentTime, item, selected, expanded, setNavExpa
[item]
);
+ const externalLinkOnClick = useCallback(
+ (event) => {
+ event.stopPropagation();
+
+ if (canWrite) {
+ selfoss.entriesPage.markEntryRead(item.id, true);
+ }
+ },
+ [canWrite, item.id]
+ );
+
const loadImagesOnClick = useCallback(
(event) => loadImages({ event, setImagesLoaded, contentBlock }),
[]
@@ -411,8 +420,6 @@ export default function Item({ currentTime, item, selected, expanded, setNavExpa
[item.source]
);
- const canWrite = useAllowedToWrite();
-
const _ = useContext(LocalizationContext);
const sharers = useSharers({ configuration, _ });
@@ -544,7 +551,7 @@ export default function Item({ currentTime, item, selected, expanded, setNavExpa
target="_blank"
rel="noreferrer"
accessKey="o"
- onClick={stopPropagation}
+ onClick={externalLinkOnClick}
>
{_('open_window')}
@@ -599,7 +606,7 @@ export default function Item({ currentTime, item, selected, expanded, setNavExpa
target="_blank"
rel="noreferrer"
accessKey="o"
- onClick={stopPropagation}
+ onClick={externalLinkOnClick}
>
{_('open_window')}