Open Bug 1337042 Opened 5 years ago Updated 3 years ago

"Previous conversations" panel sometimes has a flickering scrollbar

Categories

(Thunderbird :: Instant Messaging, defect)

45 Branch
x86_64
Linux
defect
Not set
normal

Tracking

(Not tracked)

People

(Reporter: msebor, Unassigned)

References

Details

Attachments

(3 files)

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0
Build ID: 20161208153507

Steps to reproduce:

Start Thunderbird and open the Chat tab with the Previous Conversations panel populated with nearly (?) enough items to fill the panel.


Actual results:

When the items in the Previous Conversations panel in in Chat tab reaches some number (I have 26 of them but the problem occurs with fewer as well) the panel gets into a state where it alternately adds and removes a scroll bar on the right and resizes the height of the panel.  The visual effect is that the bar separating the Participants panel above and the Previous Conversations pane twitches uncontrollably. This also appears to coincide with Thunderbird using up 100% CPU.  When the panel is vertically enlarged to make more room for the items the problem disappears until the  next time Thunderbird starts up.
OS: Unspecified → Linux
Hardware: Unspecified → x86_64
I see this twitching using Thunderbird 52.0b1 on Ubuntu 16.04.1 LTS, only when I chose "This Week" under Previous Conversations. It doesn't happen when I select "Last Week" or any other history selection.
The twitch disappears when enlarging the panel as indicated.
My CPU usage for Thunderbird rises to around 38%.
The problem reoccurs when Thunderbird is launched again.
Couldn't test 45.7.0, because I didn't have a Chat account set up.
Something for the chat people.
Flags: needinfo?(clokep)
I'm not sure if our UI does anything special here to display / hide that scrollbar. I asked Florian and IRC and nothing came to mind for him, maybe aleth has an idea?
Flags: needinfo?(clokep) → needinfo?(aleth)
I don't know if this will be helpful at all but I recall introducing a similar problem in a GUI I wrote years ago.  The cause was relying on floating point in the computation of the GUI element's integer coordinates.  The result of the computation would end up rounded either up or down when converting to the integer coordinates.  The next time the program checked to see if the GUI needed to be refreshed it would repeat the same computation but get a different result because of the rounding (off by a single pixel from the last one), and so it would refresh and store the updated result.  And so on.
Does resizing the window a little bit make the flickering go away?
Flags: needinfo?(aleth)
(In reply to aleth [:aleth] from comment #5)
> Does resizing the window a little bit make the flickering go away?

I should rephrase that. What I mean is: doesn't TB save the window size across restarts, so if resizing helps (see comment 0) does that new size not persist after a restart?
Resizing the window temporarily solves the problem until Thunderbird is restarted (it doesn't save the size).  It also only happens when there's just the right number of items (folders of Previous Conversations) in the window.  Once there are more items than fit in the window the scrollbar always appears and there is no twitching.  I can't seem to trigger the problem again by carefully resizing the window a pixel at a time.  Because there's one item for each month, the twitching only lasted for a month or maybe two.  It would help to be able to delete some of the folders or even all of the previous conversations.
(In reply to aleth [:aleth] from comment #6)
> (In reply to aleth [:aleth] from comment #5)
> > Does resizing the window a little bit make the flickering go away?
> 
> I should rephrase that. What I mean is: doesn't TB save the window size
> across restarts, so if resizing helps (see comment 0) does that new size not
> persist after a restart?

I just did some testing using Thunderbird 52.0b4 on Ubuntu 16.04.2 LTS.

Resizing Previous Conversations did not stay set where I left it when I disconnected from Char, Quit Thunderbird, Restarted and Reconnected to Chat.

I have history going back to March 2016. Today the twitching started when I seleced Last Week.
There's a longstanding similar bug on OS X (Bug 925789) with a flickering scrollbar in the participant list (above the previous conversations panel).

It's surprising this is happening on Linux, but I guess ubuntu also has an autohiding scroll bar?

We could try adding persistence to the splitter position and then at least there's a workaround.
Summary: chat previous conversations panel constantly resizing → "Previous conversations" panel sometimes has a flickering scrollbar
Status: UNCONFIRMED → NEW
Depends on: 925789
Ever confirmed: true
We could try this.
Attachment #8843749 - Flags: review?(richard.marti)
Attachment #8843749 - Flags: feedback?(msebor)
Assignee: nobody → aleth
Status: NEW → ASSIGNED
Comment on attachment 8843749 [details] [diff] [review]
Persist the height of the conv log tree for chatrooms across sessions

r- because in server message tab the tree is too small. On first open with the patch the entries in the history aren't visible (see screenshot in comment 12). Also when the tree is made small in normal conversations, in server message tab the tree has the same height with cut off bottom also when it has enough space to show all entries. This looks really weird.

Aside of this issue the persistence is working good and I like it because without the patch the tree is too tall for me.
Attachment #8843749 - Flags: review?(richard.marti) → review-
Attached image issue.png
How it looks in server message tab initially. After setting the height the tree has also here this height and is cut on thebottom also with enough space because it has no participants tree.
That's interesting. Clearly removing flex="1" has slightly different consequences on Windows ;)
(In reply to Richard Marti (:Paenglab) from comment #11)
> Aside of this issue the persistence is working good and I like it because
> without the patch the tree is too tall for me.

What do you mean with "the tree is too tall"? Do you mean that the participant list should get more space than the previous conversation list by default?

It's turning out to be quite hard to get persistence to work together with flex. I think resizing the whole TB window a little bit vertically (which is already persisted) should also stop the flickering. Is that correct?
(In reply to aleth [:aleth] from comment #14)
> What do you mean with "the tree is too tall"? Do you mean that the
> participant list should get more space than the previous conversation list
> by default?

Yes, I'm using IM only for IRC and go very seldom to the previous conversations.
(In reply to aleth [:aleth] from comment #10)
> Created attachment 8843749 [details] [diff] [review]
> Persist the height of the conv log tree for chatrooms across sessions
> 
> We could try this.

I've been getting emails from Bugzilla with a feedback request pointing to this patch.  I'm not sure how to apply the patch, but if I could, I can't verify that it's fixed the problem.  As I mentioned in comment #7, as the number of items in the Previous Conversations panel has grown, the twitching has disappeared for me because the scroll bar is always displayed.
Attachment #8843749 - Flags: feedback?(msebor)
Attached video flickery_history.mp4
Same issue for me (Linux Debian Sid, Thunderbird 58 beta 2).

I attach a screencast of what happens, if it can help somehow.
Noticing this again using Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Thunderbird/59.0a1 BuildID: 20180115030201
As far as we know, Aleth is no longer working on this. Clokep, Florian, can anybody take over?
Assignee: aleth → nobody
Status: ASSIGNED → NEW

I haven't actually seen this in a long time. Can anyone confirm if this is still an issue?

Still happening for me. Only happens with a certain amount of log items, where they would just fill up the available space, or just don't fill it up. Either way, this leads to it being intermittent per room, changing with potentially every day.

I just checked with TB 60.4.0 on Linux Mint 19.1.

I went down my Conversations list and saw the problem selecting one of the 17 channels.

No problem seen when selecting any of the other 16 conversations.

I can also confirm this is still happening with Thunderbird 60.3.0 in Linux; 18 entries in the previous conversations list on a 1920x1080 resolution are triggering the flickering for me.

The bug is quite easy to reproduce artificially:

  • Restart Thunderbird
  • Connect to any IRC server, e.g. the Mozilla IRC server
  • Join a previously unused channel, e.g. "#test1337042"
  • Type something, e.g. "test"
  • In a console, change into ~/.thunderbird/xxxxxxxx.default/logs/irc/test1337042@irc.mozilla.org/#test1337042.chat (change the path accordingly)
  • Multiply the log file, use e.g. for i in {01..12}; do cp <filename>.json 2000-$i-00.000000+0100.json; done to create 12 additional entries; repeat for 2001 until the number of entries in the conversations list is just the height of the pane on your setup.

I've been unable to reproduce this on Thunderbird 69 beta 4.

You need to log in before you can comment on or make changes to this bug.