diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js
index e7a9ea371a..508ef42c14 100644
--- a/public/src/modules/chat.js
+++ b/public/src/modules/chat.js
@@ -88,10 +88,12 @@ define(['taskbar', 'string', 'sounds'], function(taskbar, S, sounds) {
socket.on('event:chats.userStartTyping', function(withUid) {
var modal = module.getModal(withUid);
var chatContent = modal.find('#chat-content');
- modal.find('.user-typing')
- .removeClass('hide')
- .appendTo(chatContent);
- scrollToBottom(chatContent);
+ var atBottom = chatContent[0].scrollHeight - chatContent.scrollTop() === chatContent.innerHeight();
+
+ modal.find('.user-typing').removeClass('hide').appendTo(chatContent);
+ if (atBottom) {
+ scrollToBottom(chatContent);
+ }
});
socket.on('event:chats.userStopTyping', function(withUid) {
@@ -181,7 +183,7 @@ define(['taskbar', 'string', 'sounds'], function(taskbar, S, sounds) {
});
translator.translate('[[modules:chat.user_typing, ' + username + ']]', function(translated) {
- chatModal.find('.user-typing').text(translated);
+ chatModal.find('.user-typing .text').text(translated);
});
@@ -286,7 +288,7 @@ define(['taskbar', 'string', 'sounds'], function(taskbar, S, sounds) {
var time = ' ';
- if (data.fromuid !== chatContent.children().last().attr('data-uid')) {
+ if (data.fromuid !== chatContent.children('.chat-message').last().attr('data-uid')) {
var userPicture = $('
');
var userName = $(' '+ data.fromUser.username + '');
userName.toggleClass('chat-user-you', isYou);