瀏覽代碼

dragresize: Unregister global event handlers

JC Brand 5 年之前
父節點
當前提交
7866247f5d
共有 2 個文件被更改,包括 52 次插入41 次删除
  1. 36 26
      src/converse-dragresize.js
  2. 16 15
      src/headless/converse-core.js

+ 36 - 26
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 ************************/
         /************************ BEGIN Event Handlers ************************/
         function registerGlobalEventHandlers () {
         function registerGlobalEventHandlers () {
+            document.addEventListener('mousemove', onMouseMove);
+            document.addEventListener('mouseup', onMouseUp);
+        }
 
 
-            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;
-            });
+        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 ************************/
     }
     }

+ 16 - 15
src/headless/converse-core.js

@@ -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