dragresize: Unregister global event handlers

This commit is contained in:
JC Brand 2019-12-05 21:02:06 +01:00
parent 97b8ecbbdf
commit 7866247f5d
2 changed files with 53 additions and 42 deletions

View File

@ -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 ************************/ /************************ BEGIN Event Handlers ************************/
function registerGlobalEventHandlers () { function registerGlobalEventHandlers () {
document.addEventListener('mousemove', onMouseMove);
document.addEventListener('mousemove', function (ev) { document.addEventListener('mouseup', onMouseUp);
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;
});
} }
function unregisterGlobalEventHandlers () {
document.removeEventListener('mousemove', onMouseMove);
document.removeEventListener('mouseup', onMouseUp);
}
_converse.api.listen.on('registeredGlobalEventHandlers', registerGlobalEventHandlers); _converse.api.listen.on('registeredGlobalEventHandlers', registerGlobalEventHandlers);
_converse.api.listen.on('unregisteredGlobalEventHandlers', unregisterGlobalEventHandlers);
_converse.api.listen.on('beforeShowingChatView', view => view.initDragResize().setDimensions()); _converse.api.listen.on('beforeShowingChatView', view => view.initDragResize().setDimensions());
/************************ END Event Handlers ************************/ /************************ END Event Handlers ************************/
} }

View File

@ -836,7 +836,7 @@ async function finishInitialization () {
await initStorage(); await initStorage();
initClientConfig(); initClientConfig();
initPlugins(); initPlugins();
_converse.registerGlobalEventHandlers(); registerGlobalEventHandlers();
if (!Backbone.History.started) { if (!Backbone.History.started) {
Backbone.history.start(); 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 () { function unregisterGlobalEventHandlers () {
document.removeEventListener("visibilitychange", _converse.saveWindowState); document.removeEventListener("visibilitychange", _converse.saveWindowState);
_converse.api.trigger('unregisteredGlobalEventHandlers'); _converse.api.trigger('unregisteredGlobalEventHandlers');
@ -1174,20 +1189,6 @@ _converse.initialize = async function (settings, callback) {
_converse.api.trigger('windowStateChanged', {state}); _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 () { this.bindResource = async function () {
/** /**
* Synchronous event triggered before we send an IQ to bind the user's * Synchronous event triggered before we send an IQ to bind the user's