Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#3751 closed defect (fixed)

Combined contacts lead to broken contact list sort

Reported by: Owned by: evands
Milestone: Adium X 1.0 Component: Adium UI
Version: Severity: minor
Keywords: Cc:
Patch Status:


(bug is also present in .89.1)

When using combined/consolidated contacts, contact list sorting slowly becomes broken.

  1. It seems that initially, the contact list isn't re-ordered when the representative name for a combined contact changes due to account status changes.
  2. After one entry in the contact list is out of place, further updates become more and more confused, as it seems the "insert new contact" functionality assumes the contact list is sorted to work correctly.
  3. If left going long enough, the ordering eventually becomes apparently random.

Any action which re-sorts the contact list will work correctly, and the process begins again.

Attachments (1)

screenshot.png (139.4 KB) - added by chowells@… 14 years ago.

Download all attachments as: .zip

Change History (9)

comment:1 Changed 14 years ago by Chris Forsythe

Milestone: Adium X 1.0

Haven't verified issue

comment:2 Changed 14 years ago by Evan Schoenberg

Milestone: Adium X 1.0

I use tons of consolidated contacts, and I don't experience this issue.

  • Is it only immediately after consolidation, or does this occur across relaunches?
  • What is your sort method?
  • (Point 2 in the description is false)

Changed 14 years ago by chowells@…

Attachment: screenshot.png added

comment:3 Changed 14 years ago by chowells@…

This happens every time I run the program.

And the only way for point 2 in my description to be false is for the entire contact list to be sorted every time a contact is inserted. Otherwise it's implicitly relying on there being only one correct spot to insert contacts that have just come online. Once it starts to get out of order, it becomes ambiguous, and therefore cannot just insert something correctly, because there isn't only one correct spot for it.

Now, as for that screenshot.. In that case, the key element is Topher42. He's combined with an MSN contact which is named something like Chris. Whenever he connects, the Chris account comes online first, followed shortly after by the Topher42 account. The way I have the accounts combined gives priority to the Topher42 account, which is the one shown if both are online and available. However, the Topher42 account stays displayed in the contact list where Chris was inserted. Later, when ToasterCookie and Sk8Rainman came online, there was ambiguity on where to insert them into the list. Adium seems to have chosen the first spot where they fit (makes sense for just doing a simple linear search), which leads to really confused-looking sorting in this case.

And this happen constantly. No matter when I've restarted Adium, no matter when I combined the contacts.

comment:4 Changed 14 years ago by Evan Schoenberg

When you say "a contact is inserted" you mean something differently than I do, which explains the misunderstanding. You're saying that when a contact signs on and joins (because it's supposed to) a metacontact, the list does not resort. That may be true.

Without even checking I can confirm this bug exists... there's nothing in metacontact code which calls for a resort when the MSN display name changes. We need to be resorting if the sort is alphabetical and it does... I've never seen this bug because I don't generally use MSN.

comment:5 Changed 14 years ago by Evan Schoenberg

And in the context of that -- you're right, the way sorting works, if one thing goes wrong, a lot is going to go wrong - the sort code says "ToasterCookie? and Sk8Rainman should be both be ordered above tropher42" and so they are. Your screen shot elucidates the problem nicely.

comment:6 Changed 14 years ago by Evan Schoenberg

Milestone: Adium X 1.0
Owner: changed from nobody to Evan Schoenberg
Status: newassigned

comment:7 Changed 14 years ago by Evan Schoenberg

Resolution: fixed
Status: assignedclosed

(In [15783])

  • Use the AIMutableOwnerArray delegate method to know when a contact contained by a meta contact changes its display name and notify appropriately, allowing proper sorting. Fixes #3751
    • Removed a duplicate setter call in -[AIListContact setServersideAlias:asStatusMessage:silently]

comment:8 Changed 14 years ago by chowells@…

Thank you! I'm glad I thought of using a screenshot to help clear up what I meant. Your time is appreciated.

Note: See TracTickets for help on using tickets.