#1489: Optional IM icons in the top bar #1492

Open
TheSlowly wants to merge 1 commit from TheSlowly/Slipstream:im-chiclets into main
Collaborator

Fixes #1489.

Off by default: Preferences > Chat > Chat Windows > "Show an icon for each open IM in the top bar". One icon per open person, group or conference IM, with an unread dot and count, a speaking indicator, click to select or hide the conversation, and right-click menus (Snooze for groups).

Fixes #1489. Off by default: Preferences > Chat > Chat Windows > "Show an icon for each open IM in the top bar". One icon per open person, group or conference IM, with an unread dot and count, a speaking indicator, click to select or hide the conversation, and right-click menus (Snooze for groups).
People coming from other viewers miss a picture per open IM across the
top bar. The chiclet list is still there next to the notifications
button, but only script and inventory-offer icons reach it since the
per-IM chiclets were removed years ago; their menus were left in the
skin with nothing handling them.

SLIMChiclet is one icon per open person, group or conference IM:
- the person's picture, the group's insignia, or a conference's other
  participant tinted green (a people icon without one); RLVa @shownames
  hides the picture, anonymises the name and greys out Profile / Add
  Friend; nearby chat gets none;
- unread messages: a dot on the picture and the count beside it (99+),
  the icon widening for it; none while that conversation is in front
  with focus, none for a muted group chat;
- a speaking indicator beside it while the conversation's voice is live
  (the other person, or anyone in a group or conference);
- left click shows the conversation selected in Conversations; a click
  while it is already in front hides Conversations as its close button
  does (every conversation stays open; a torn-off one only hides);
- right click opens the existing menu_imchiclet_p2p / _group / _adhoc
  menus, handled again; Show Session is greyed out while the
  conversation is showing, and the group menu gains Snooze Session.

LLChicletBar observes IM sessions while SLShowIMChiclets is on (off by
default, live): it adds the open conversations when switched on, one per
new session, re-keys on a session id change, and removes them when
switched off or when a conversation ends. The panel's message-count
callback, a stub until now, refreshes the count. The checkbox is in
Preferences > Chat > Chat Windows.

Test-Plan:
    g++ -std=c++17 -Wall -Wextra -Werror -I indra/newview
        indra/newview/tests/slimchicletrules_test.cpp: 17 checks pass
    python3 indra/newview/tests/slimchiclet_checks.py: pass (every menu
        action handled per kind; failed with one handler renamed)
    clang-cl /Zs slimchiclet.cpp, llchicletbar.cpp, llchiclet.cpp: clean
    In world: turn the preference on with IMs open -> one icon each; a new
    IM adds one; a message shows the dot and count, opening it clears
    them and selects it in the list; clicking again hides Conversations;
    right-click menus work (Snooze for groups); ending a conversation
    removes its icon; turning the preference off removes them all.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u im-chiclets:TheSlowly-im-chiclets
git switch TheSlowly-im-chiclets
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream!1492
No description provided.