Bug 49698

Summary: Article viewer gets cleared when viewing new article and news fetch ends
Product: knode Reporter: Stephan Binner <binner>
Component: generalAssignee: kdepim bugs <kdepim-bugs>
Status: RESOLVED UNMAINTAINED    
Severity: normal CC: ana, fd0man, heikki, heikki, karl, kde, linuxmustdie, rdieter, sven.burmeister, swined, tobias
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:

Description Stephan Binner 2002-10-25 23:59:58 UTC
Version:            (using KDE Devel)
Installed from:    Compiled sources

Steps to reproduce:

 - Run "Get New Articles in All Groups"
 - Select an article newly fetched by this for reading (read it, select another, ... ;)
 - When "Get New Articles in All Groups" finishs the article viewer is cleared.

To continue to read your current article you have to select another one first or if this is the only new one in current group, mark it unread, change group and select it again. Very annoying.
Comment 1 Cp Hennessy 2002-10-29 11:26:48 UTC
Agreed - very annoying. 
Comment 2 Volker Krause 2004-07-11 13:29:43 UTC
*** Bug 74825 has been marked as a duplicate of this bug. ***
Comment 3 Volker Krause 2004-07-11 14:38:40 UTC
*** Bug 55305 has been marked as a duplicate of this bug. ***
Comment 4 Volker Krause 2004-09-07 17:46:35 UTC
*** Bug 89009 has been marked as a duplicate of this bug. ***
Comment 5 Stephan Binner 2004-09-12 16:53:20 UTC
*** Bug 89352 has been marked as a duplicate of this bug. ***
Comment 6 Stephan Binner 2004-11-20 10:55:01 UTC
*** Bug 93596 has been marked as a duplicate of this bug. ***
Comment 7 dag 2004-12-10 09:01:22 UTC
Still there in 3.3.2.
My guess is the the reason is us all having set up a display filter that shows only unread articles and using "Get new articles automatically".
Every time when a new set of articles are read the display will be updated and as we were just reading the article before that it is now read and will not be redisplayed.
But it really is THE most annoying "feature" with knode at the moment.
Comment 8 Stephan Binner 2005-02-27 00:09:39 UTC
*** Bug 100330 has been marked as a duplicate of this bug. ***
Comment 9 Stephan Binner 2005-05-15 14:09:28 UTC
setFirstChild in KNArticleManager::showHdrs() doesn't seem to be correctly set to false.
Comment 10 Andrew Schulman 2005-09-15 13:54:59 UTC
This bug is now almost 3 years old.  It has 207 votes from 13 people, all of whom agree that it's pretty annoying.  It's #41 on the "Most hated bugs" list.  It's easily reproducible.

I dislike to complain, because I'm not doing any coding here.  But isn't it time to squash this one?

Thanks,
Andrew.
Comment 11 A T Somers 2005-11-15 00:24:10 UTC
The problem also occurs when not reading any of the newly fetched articles, but when reading an article that was fetched before. This can happen quite frequently if you have configured KNode to retreive new headers every so often. It's really annoying.
Comment 12 Michael Trausch 2006-06-08 13:36:09 UTC
This is still in 3.5.3 (KNode 0.10.2)... is there any ETR on this one?  I was about to report it, and then I found this outstanding issue already present on it.  I am incapable of creating a patch to fix this, since I am not a C++/KDE developer, though I would concur with everyone else in that it is really annoying.  I use KNode to read newsgroups through my school's distance learning program.

My setup is that I am using the Show Threads with Unread filter, and every time new messages are auto-fetched, the message disappears from the preview pane.  I can work around it by double-clicking the message in the message list window, and opening the message in its own window after it disappears from the preview pane, but that is rather annoying.

+5 votes.
Comment 13 Volker Krause 2006-11-22 14:29:08 UTC
*** Bug 137642 has been marked as a duplicate of this bug. ***
Comment 14 heikki 2007-08-29 10:39:20 UTC
I can not provide a patch, but I can suggest one way to do it: Improve the filtering algorithm so that instead of 'show only unread articles' the rule says 'show only unread articles, and the currently displayed article'. (and the same for the rest of the filters, automagically behind the scenes).

That way, the filters will never decide to filter the currently displayed article away, and the problem disappears. 

I don't know the internals of knode, but this sounds like a fairly trivial piece of logic, provided that the information is available at the right place. Would a developer care to comment?

Regards

   Heikki Levanto
Comment 15 A. Mosteo 2008-03-04 15:09:53 UTC
Just found this bug report, adding my voice and votes to this annoyance.
Comment 16 heikki 2010-02-28 12:56:22 UTC
I hate to complain, but this bug was opened in 2002, and many people have found it extremely annoying. I offered a simple solution in 2007, but no one has even commented. 

This bug bites me several times a week, when the automatic fetch happens while I am reading an article. Never a serious catastrophy, but always an irritation.

Could someone at least look at the matter and post a comment, please?
Comment 17 Alex Alexandrov 2011-03-30 06:50:26 UTC
i'm also very annoyed by that stuff, and completely tired of the messages that disappear while i am reading them with filter set to "threads with unread" and auto-refresh set to on. so, i've just made a simple patch, that solves the problem and seems to work for me without any noticeable issues. 

diff --git a/knode/knarticlemanager.cpp b/knode/knarticlemanager.cpp
index 46d1b69..7340ff5 100644
--- a/knode/knarticlemanager.cpp
+++ b/knode/knarticlemanager.cpp
@@ -276,18 +276,8 @@ void KNArticleManager::showHdrs(bool clear)
 
     }
 
-    if (current && !current->filterResult()) {   // try to find a parent that is visible
-      int idRef;
-      while (current && !current->filterResult()) {
-        idRef=current->idRef();
-        if (idRef == -1)
-          break;
-        current = g_roup->byId(idRef);
-      }
-    }
-
-    if(current && current->filterResult()) {
-      if(!current->listItem())
+    if (current) {
+      if (!current->listItem() && current->filterResult())
         createCompleteThread(current);
       v_iew->setActive( current->listItem() );
       setFirstChild=false;
Comment 18 Alex Alexandrov 2011-04-15 13:36:25 UTC
another, even better, path for this:

diff --git a/knode/knarticlemanager.cpp b/knode/knarticlemanager.cpp
index 46d1b69..94dc3ab 100644
--- a/knode/knarticlemanager.cpp
+++ b/knode/knarticlemanager.cpp
@@ -276,22 +276,7 @@ void KNArticleManager::showHdrs(bool clear)

    }

-    if (current && !current->filterResult()) {   // try to find a
parent that is visible
-      int idRef;
-      while (current && !current->filterResult()) {
-        idRef=current->idRef();
-        if (idRef == -1)
-          break;
-        current = g_roup->byId(idRef);
-      }
-    }
-
-    if(current && current->filterResult()) {
-      if(!current->listItem())
-        createCompleteThread(current);
-      v_iew->setActive( current->listItem() );
-      setFirstChild=false;
-    }
+     setFirstChild = !current;

    d_isableExpander=false;
Comment 19 Andrew Crouthamel 2018-09-04 18:32:43 UTC
Hello! Sorry to be the bearer of bad news, but this project has been unmaintained for many years so I am closing this bug.