diff --git a/CHANGELOG.md b/CHANGELOG.md
index e146542d55..6f5ad947a0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -43,6 +43,7 @@
- fix: exit search when clicking on profile when the selected profile is already the selected account #4166
- "Encryption Info" dialog showing all info in one line #4162
- losing scrolling "momentum" while scrolling the messages list fast #4122
+- reactions wrapping in an ugly way on narrower window size
diff --git a/packages/frontend/src/components/Reactions/index.tsx b/packages/frontend/src/components/Reactions/index.tsx
index 2016640482..d4ac539678 100644
--- a/packages/frontend/src/components/Reactions/index.tsx
+++ b/packages/frontend/src/components/Reactions/index.tsx
@@ -41,8 +41,12 @@ export default function Reactions(props: Props) {
})}
key={emoji}
>
- {emoji}
- {count > 1 && {count}}
+
+ {emoji}
+ {count > 1 && (
+ {count}
+ )}
+
)
})}
diff --git a/packages/frontend/src/components/Reactions/styles.module.scss b/packages/frontend/src/components/Reactions/styles.module.scss
index a7c3350841..372d61fb9c 100644
--- a/packages/frontend/src/components/Reactions/styles.module.scss
+++ b/packages/frontend/src/components/Reactions/styles.module.scss
@@ -1,17 +1,44 @@
+$reaction-font-size: 16px;
+$reaction-row-height: 25px;
.reactions {
cursor: pointer;
margin-right: 10px;
position: relative;
- line-height: 1; // So that it doesn't change the message height.
top: 16px;
+ // In case the parent element is vertically taller than this element.
+ align-self: flex-end;
+ // Ensure that the reactions element doesn't change the height of a message,
+ // so that the message list doesn't get "scrolled up".
+ // See https://github.com/deltachat/deltachat-desktop/issues/3753
+ //
+ // The actual value of `margin-top` doesn't matter, it could be
+ // -9999px as well.
+ margin-top: -16px;
+ // Make space for the "sent at" element - don't make it wrap.
+ flex-shrink: 999999999999999;
+ // In case the parent is vertically taller than this element.
+ align-self: flex-end;
+
+ display: flex;
+ // In case the screen in so narrow that we can't even show
+ // 5 emojis (SHOW_MAX_DIFFERENT_EMOJIS).
+ // Let's wrap and hide them.
+ // See https://stackoverflow.com/questions/43547430/how-can-i-completely-hide-elements-that-overflow-their-container-vertically
+ flex-wrap: wrap;
+ overflow: hidden;
+ height: $reaction-row-height;
}
.emoji {
background-color: var(--messageIncomingBg);
border-radius: 24px;
border: solid 1px rgba(100, 100, 100, 0.3);
- font-size: 16px;
+ font-size: $reaction-font-size;
+ line-height: 1;
padding: 2px 6px;
+ display: flex;
+ align-items: center;
+ height: $reaction-row-height;
& ~ & {
margin-left: 2px;