<!-- 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>
@@ -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--) {
+++ /dev/null
- /* 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);
- }
-});
@@ -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;
+ }
+ }
}
};
* 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"));