summaryrefslogtreecommitdiff
path: root/lib/dijit/Viewport.js.uncompressed.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dijit/Viewport.js.uncompressed.js')
-rw-r--r--lib/dijit/Viewport.js.uncompressed.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/dijit/Viewport.js.uncompressed.js b/lib/dijit/Viewport.js.uncompressed.js
new file mode 100644
index 000000000..8de455af2
--- /dev/null
+++ b/lib/dijit/Viewport.js.uncompressed.js
@@ -0,0 +1,50 @@
+define("dijit/Viewport", [
+ "dojo/Evented",
+ "dojo/on",
+ "dojo/ready",
+ "dojo/sniff",
+ "dojo/_base/window", // global
+ "dojo/window" // getBox()
+], function(Evented, on, ready, has, win, winUtils){
+
+ // module:
+ // dijit/Viewport
+
+ /*=====
+ return {
+ // summary:
+ // Utility singleton to watch for viewport resizes, avoiding duplicate notifications
+ // which can lead to infinite loops.
+ // description:
+ // Usage: Viewport.on("resize", myCallback).
+ //
+ // myCallback() is called without arguments in case it's _WidgetBase.resize(),
+ // which would interpret the argument as the size to make the widget.
+ };
+ =====*/
+
+ var Viewport = new Evented();
+
+ ready(200, function(){
+ var oldBox = winUtils.getBox();
+ Viewport._rlh = on(win.global, "resize", function(){
+ var newBox = winUtils.getBox();
+ if(oldBox.h == newBox.h && oldBox.w == newBox.w){ return; }
+ oldBox = newBox;
+ Viewport.emit("resize");
+ });
+
+ // Also catch zoom changes on IE8, since they don't naturally generate resize events
+ if(has("ie") == 8){
+ var deviceXDPI = screen.deviceXDPI;
+ setInterval(function(){
+ if(screen.deviceXDPI != deviceXDPI){
+ deviceXDPI = screen.deviceXDPI;
+ Viewport.emit("resize");
+ }
+ }, 500);
+ }
+ });
+
+ return Viewport;
+});