Skip to content

Conversation

brianHarder
Copy link
Contributor

Contributor checklist:

  • My contribution is not related to translations.
  • My commits are in nice logical chunks with good commit messages
  • My changes are rebased on the latest main branch
  • A pnpm run ready run passes successfully (more about tests here)
  • My changes are ready to be shipped to users

Description

This PR ensures that highlighting in the chat list only occurs by mouse hover and keyboard navigation. Previously there was an issue where clicking and dragging on a chat would cause it to stay highlighted both throughout the drag and even after mouse release. To achieve this, the default mouse behavior has been prevented, and new CSS classes have been added to only highlight conversation lists via mouse hover or the tab key.

I manually tested this PR by performing mouse movements in my staging environment and ensuring that the highlighting was either applied or not applied as expected. I specifically simulated the click and drag several times to make sure the highlight was not lingering. I also added a test file - conversationListHighlight_test.ts - which simulates a hover movement to check for highlighting and a click-drag movement to check that the highlight does not stay. I did all my testing on my laptop, which runs macOS 10.15.7.

Screen.Recording.2025-08-15.at.3.59.53.PM.mov

jamiebuilds-signal and others added 29 commits August 15, 2025 11:01
Co-authored-by: Yash <[email protected]>
Co-authored-by: ayumi-signal <[email protected]>
Co-authored-by: Jamie Kyle <[email protected]>
Co-authored-by: Fedor Indutny <[email protected]>
Co-authored-by: trevor-signal <[email protected]>
Copy link
Contributor

@trevor-signal trevor-signal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@brianHarder thanks for this PR! It looks great; I have one clarifying question.

It's great that you added a mock-test, but I think it's unnecessary for this kind of small stylistic change -- mock tests are great but also have overhead so we don't add them for every change.

@@ -290,7 +290,12 @@ export const BaseConversationListItem: FunctionComponent<PropsType> =
data-testid={testId}
disabled={disabled}
onClick={onClick}
onMouseDown={onMouseDown}
onMouseDown={event => {
event.preventDefault();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you say more why this change is necessary?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@trevor-signal thank you for the feedback! I included this line of code because the default Chromium behavior would maintain an 'active' state on a chat list item throughout the drag, which I believe could cause the highlight to linger. This change was specifically to address the highlight during dragging.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants