Move resize event handling to BASE class
authorMarkus Schmidt <[email protected]>
Wed, 22 Jul 2015 19:27:24 +0000 (22 21:27 +0200)
committerMarkus Schmidt <[email protected]>
Wed, 22 Jul 2015 19:27:24 +0000 (22 21:27 +0200)
Cleanup in window-specific functions

index.html
toolkit/implements/base.js
toolkit/javascript/event.resize.js [deleted file]
toolkit/javascript/toolkit.js
toolkit/javascript/window.js

index 56c0bcb..24d9c88 100644 (file)
@@ -16,7 +16,6 @@
         
         <!-- LIBRARIES -->
         <script src="toolkit/javascript/constants.js"></script>
-        <script src="toolkit/javascript/event.resize.js"></script>
         <script src="toolkit/javascript/svgutils.js"></script>
         <script src="toolkit/javascript/math.js"></script>
         <script src="toolkit/javascript/array.js"></script>
index 429a44f..9daaaef 100644 (file)
@@ -122,6 +122,12 @@ BASE = $class({
                 this.add_event(ev[i].event, fun, ev[i].prevent, ev[i].stop);
             return;
         }
+        // handle resize events globally since there's no resize event
+        // for DOM elements
+        if (event == "resize") {
+            toolkit.add_resize_event(this);
+            return;
+        }
         ev = this.__events;
         if (!ev.hasOwnProperty(e)) {
             if (__native_events[e]) {
@@ -160,6 +166,12 @@ BASE = $class({
                 this.remove_event(ev[i].event, fun);
             return;
         }
+        // handle resize events globally since there's no resize event
+        // for DOM elements
+        if (event == "resize") {
+            toolkit.remove_resize_event(this);
+            return;
+        }
         ev = this.__events;
         if (ev.hasOwnProperty(e)) {
             for (var j = ev[e].queue.length - 1; j >= 0; j--) {
diff --git a/toolkit/javascript/event.resize.js b/toolkit/javascript/event.resize.js
deleted file mode 100644 (file)
index 9b7cbee..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
- /* toolkit. provides different widgets, implements and modules for 
- * building audio based applications in webbrowsers.
- * 
- * Invented 2013 by Markus Schmidt <[email protected]>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General
- * Public License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02110-1301  USA
- */
-
-document._resizes = [];
-document._monitoring_resizes = -1;
-document._monitor_resizes = function () {
-    for (var i = 0; i < document._resizes.length; i++) {
-        var r = document._resizes[i];
-        if (r.element.offsetWidth != r.x || r.element.offsetHeight != r.y) {
-            r.x = r.element.offsetWidth;
-            r.y = r.element.offsetHeight;
-            r.element.dispatchEvent("resize");
-        }
-    }
-    if (document._resizes.length) {
-        document._monitoring_resizes = window.setTimeout("document._monitor_resizes()", 100);
-    }
-}
-document._add_resize = function (element) {
-    document._resizes.push({element: element, x: element.offsetWidth, y: element.offsetHeight});
-    if (document._monitoring_resizes < 0) {
-        document._monitoring_resizes = window.setTimeout("document._monitor_resizes()", 100);
-    }
-}
-document._remove_resize = function (element) {
-    for (var i = 0; i < document._resizes; i++) {
-        if (element == document._resizes[i]) document._resizes.splice(i, 1);
-        if (!document._resizes.length && document._monitoring_resizes < 0) {
-            window.clearTimeout(document._monitoring_resizes);
-            document._monitoring_resizes = -1;
-        }
-    }
-}
-
-Class.refactor(Element, {
-    addEvent: function (event, func) {
-        if (event == "resize" && this.get("tag") !== "window")
-            document._add_resize(this)
-        this.previous(event, func);
-    },
-    removeEvent: function (event, func) {
-        if (event == "resize" && this.get("tag") !== "window")
-            document._remove_resize(this)
-        this.previous(event, func);
-    }
-});
index 6ebcfb5..bfc76c0 100644 (file)
@@ -223,5 +223,37 @@ toolkit = {
             return "UNIX";
         if (navigator.appVersion.indexOf("Linux")!=-1)
             return "Linux";
+    },
+    
+    _resize_events: [],
+    _monitored_resize_events: -1,
+    
+    monitor_resize_events: function () {
+        for (var i = 0; i < toolkit._resize_events.length; i++) {
+            var r = toolkit._resize_events[i];
+            if (r.element.offsetWidth != r.x || r.element.offsetHeight != r.y) {
+                r.x = r.element.offsetWidth;
+                r.y = r.element.offsetHeight;
+                r.element.dispatchEvent("resize");
+            }
+        }
+        if (toolkit._resize_events.length) {
+            toolkit._monitored_resize_events = window.setTimeout("toolkit.monitor_resize_events()", 100);
+        }
+    },
+    add_resize_event: function (element) {
+        toolkit._resize_events.push({element: element, x: element.offsetWidth, y: element.offsetHeight});
+        if (toolkit._monitored_resize_events < 0) {
+            toolkit._monitored_resize_events = window.setTimeout("toolkit.monitor_resize_events()", 100);
+        }
+    },
+    remove_resize_event: function (element) {
+        for (var i = 0; i < toolkit._resize_events; i++) {
+            if (element == toolkit._resize_events[i]) toolkit._resize_events.splice(i, 1);
+            if (!toolkit._resize_events.length && toolkit._monitored_resize_events < 0) {
+                window.clearTimeout(toolkit._monitored_resize_events);
+                toolkit._monitored_resize_events = -1;
+            }
+        }
     }
 };
index 15f01d9..1c7ba63 100644 (file)
  * Boston, MA  02110-1301  USA
  */
 
-is_touch = function () {
-    return 'ontouchstart' in window // works on most browsers 
-      || 'onmsgesturechange' in window; // works on ie10
-}
-os = function () {
-    var ua = navigator.userAgent.toLowerCase();
-    if (ua.indexOf("android") > -1)
-        return "Android";
-    if (/iPad/i.test(ua) || /iPhone OS 3_1_2/i.test(ua) || /iPhone OS 3_2_2/i.test(ua))
-        return "iOS";
-    if ((ua.match(/iPhone/i)) || (ua.match(/iPod/i)))
-        return "iOS";
-    if (navigator.appVersion.indexOf("Win")!=-1)
-        return "Windows";
-    if (navigator.appVersion.indexOf("Mac")!=-1)
-        return "MacOS";
-    if (navigator.appVersion.indexOf("X11")!=-1)
-        return "UNIX";
-    if (navigator.appVersion.indexOf("Linux")!=-1)
-        return "Linux";
-},
 keep_inside = function (element, resize) {
     var ex = parseInt(element.getStyle("left"));
     var ey = parseInt(element.getStyle("top"));