Commit fdc8acf3 authored by JC Brand's avatar JC Brand

Avoid sending blur event when navigating the emoji picker

Also, listen to the `focusin` and `focusout` events, since they bubble,
allowing us to listen on the chatbox itself.
parent 8ab32f7b
...@@ -323,9 +323,8 @@ converse.plugins.add('converse-chatview', { ...@@ -323,9 +323,8 @@ converse.plugins.add('converse-chatview', {
'show_toolbar': _converse.show_toolbar, 'show_toolbar': _converse.show_toolbar,
'unread_msgs': __('You have unread messages') 'unread_msgs': __('You have unread messages')
})); }));
const textarea = this.el.querySelector('.chat-textarea'); this.el.addEventListener('focusin', ev => this.emitFocused(ev));
textarea.addEventListener('focus', ev => this.emitFocused(ev)); this.el.addEventListener('focusout', ev => this.emitBlurred(ev));
textarea.addEventListener('blur', ev => this.emitBlurred(ev));
this.renderToolbar(); this.renderToolbar();
}, },
...@@ -1195,7 +1194,7 @@ converse.plugins.add('converse-chatview', { ...@@ -1195,7 +1194,7 @@ converse.plugins.add('converse-chatview', {
}, },
emitBlurred (ev) { emitBlurred (ev) {
if (this.el.contains(document.activeElement)) { if (this.el.contains(document.activeElement) || this.el.contains(ev.relatedTarget)) {
// Something else in this chatbox is still focused // Something else in this chatbox is still focused
return; return;
} }
...@@ -1209,6 +1208,10 @@ converse.plugins.add('converse-chatview', { ...@@ -1209,6 +1208,10 @@ converse.plugins.add('converse-chatview', {
}, },
emitFocused (ev) { emitFocused (ev) {
if (this.el.contains(ev.relatedTarget)) {
// Something else in this chatbox was already focused
return;
}
/** /**
* Triggered when the focus has been moved to a particular chat. * Triggered when the focus has been moved to a particular chat.
* @event _converse#chatBoxFocused * @event _converse#chatBoxFocused
......
...@@ -184,9 +184,6 @@ converse.plugins.add('converse-emoji-views', { ...@@ -184,9 +184,6 @@ converse.plugins.add('converse-emoji-views', {
afterRender () { afterRender () {
this.initIntersectionObserver(); this.initIntersectionObserver();
const textarea = this.el.querySelector('.emoji-search');
textarea.addEventListener('focus', ev => this.chatview.emitFocused(ev));
textarea.addEventListener('blur', ev => this.chatview.emitBlurred(ev));
this.initArrowNavigation(); this.initArrowNavigation();
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment