diff --git a/src/converse-dragresize.js b/src/converse-dragresize.js index 5187c7ac9..38f0346d8 100644 --- a/src/converse-dragresize.js +++ b/src/converse-dragresize.js @@ -331,37 +331,47 @@ converse.plugins.add('converse-dragresize', { }; + function onMouseMove (ev) { + if (!_converse.resizing || !_converse.allow_dragresize) { return true; } + ev.preventDefault(); + _converse.resizing.chatbox.resizeChatBox(ev); + } + + + function onMouseUp (ev) { + if (!_converse.resizing || !_converse.allow_dragresize) { return true; } + ev.preventDefault(); + const height = u.applyDragResistance( + _converse.resizing.chatbox.height, + _converse.resizing.chatbox.model.get('default_height') + ); + const width = u.applyDragResistance( + _converse.resizing.chatbox.width, + _converse.resizing.chatbox.model.get('default_width') + ); + if (_converse.api.connection.connected()) { + _converse.resizing.chatbox.model.save({'height': height}); + _converse.resizing.chatbox.model.save({'width': width}); + } else { + _converse.resizing.chatbox.model.set({'height': height}); + _converse.resizing.chatbox.model.set({'width': width}); + } + _converse.resizing = null; + } + /************************ BEGIN Event Handlers ************************/ function registerGlobalEventHandlers () { - - document.addEventListener('mousemove', function (ev) { - if (!_converse.resizing || !_converse.allow_dragresize) { return true; } - ev.preventDefault(); - _converse.resizing.chatbox.resizeChatBox(ev); - }); - - document.addEventListener('mouseup', function (ev) { - if (!_converse.resizing || !_converse.allow_dragresize) { return true; } - ev.preventDefault(); - const height = u.applyDragResistance( - _converse.resizing.chatbox.height, - _converse.resizing.chatbox.model.get('default_height') - ); - const width = u.applyDragResistance( - _converse.resizing.chatbox.width, - _converse.resizing.chatbox.model.get('default_width') - ); - if (_converse.api.connection.connected()) { - _converse.resizing.chatbox.model.save({'height': height}); - _converse.resizing.chatbox.model.save({'width': width}); - } else { - _converse.resizing.chatbox.model.set({'height': height}); - _converse.resizing.chatbox.model.set({'width': width}); - } - _converse.resizing = null; - }); + document.addEventListener('mousemove', onMouseMove); + document.addEventListener('mouseup', onMouseUp); } + + function unregisterGlobalEventHandlers () { + document.removeEventListener('mousemove', onMouseMove); + document.removeEventListener('mouseup', onMouseUp); + } + _converse.api.listen.on('registeredGlobalEventHandlers', registerGlobalEventHandlers); + _converse.api.listen.on('unregisteredGlobalEventHandlers', unregisterGlobalEventHandlers); _converse.api.listen.on('beforeShowingChatView', view => view.initDragResize().setDimensions()); /************************ END Event Handlers ************************/ } diff --git a/src/headless/converse-core.js b/src/headless/converse-core.js index 1b353e040..0abbe68b1 100644 --- a/src/headless/converse-core.js +++ b/src/headless/converse-core.js @@ -836,7 +836,7 @@ async function finishInitialization () { await initStorage(); initClientConfig(); initPlugins(); - _converse.registerGlobalEventHandlers(); + registerGlobalEventHandlers(); if (!Backbone.History.started) { Backbone.history.start(); @@ -927,6 +927,21 @@ async function getLoginCredentialsFromBrowser () { } +function registerGlobalEventHandlers () { + document.addEventListener("visibilitychange", _converse.saveWindowState); + _converse.saveWindowState({'type': document.hidden ? "blur" : "focus"}); // Set initial state + /** + * Called once Converse has registered its global event handlers + * (for events such as window resize or unload). + * Plugins can listen to this event as cue to register their own + * global event handlers. + * @event _converse#registeredGlobalEventHandlers + * @example _converse.api.listen.on('registeredGlobalEventHandlers', () => { ... }); + */ + _converse.api.trigger('registeredGlobalEventHandlers'); +} + + function unregisterGlobalEventHandlers () { document.removeEventListener("visibilitychange", _converse.saveWindowState); _converse.api.trigger('unregisteredGlobalEventHandlers'); @@ -1174,20 +1189,6 @@ _converse.initialize = async function (settings, callback) { _converse.api.trigger('windowStateChanged', {state}); }; - this.registerGlobalEventHandlers = function () { - document.addEventListener("visibilitychange", _converse.saveWindowState); - _converse.saveWindowState({'type': document.hidden ? "blur" : "focus"}); // Set initial state - /** - * Called once Converse has registered its global event handlers - * (for events such as window resize or unload). - * Plugins can listen to this event as cue to register their own - * global event handlers. - * @event _converse#registeredGlobalEventHandlers - * @example _converse.api.listen.on('registeredGlobalEventHandlers', () => { ... }); - */ - _converse.api.trigger('registeredGlobalEventHandlers'); - }; - this.bindResource = async function () { /** * Synchronous event triggered before we send an IQ to bind the user's