]> source.dussan.org Git - jquery-ui.git/commitdiff
Dailog: Cover iframes during drag and resize. Fixes #7650 - Dialog cannot be dragged...
authorScott González <scott.gonzalez@gmail.com>
Sun, 3 Feb 2013 13:55:34 +0000 (08:55 -0500)
committerScott González <scott.gonzalez@gmail.com>
Sun, 3 Feb 2013 13:55:34 +0000 (08:55 -0500)
ui/jquery.ui.dialog.js

index f2bc906fdb01306edfbcd3366c50e4844490f8ad..85dbddda26637b7499054441b903dabb2fa0d8ca 100644 (file)
@@ -444,6 +444,7 @@ $.widget( "ui.dialog", {
                        containment: "document",
                        start: function( event, ui ) {
                                $( this ).addClass("ui-dialog-dragging");
+                               that._blockFrames();
                                that._trigger( "dragStart", event, filteredUi( ui ) );
                        },
                        drag: function( event, ui ) {
@@ -455,6 +456,7 @@ $.widget( "ui.dialog", {
                                        ui.position.top - that.document.scrollTop()
                                ];
                                $( this ).removeClass("ui-dialog-dragging");
+                               that._unblockFrames();
                                that._trigger( "dragStop", event, filteredUi( ui ) );
                        }
                });
@@ -491,6 +493,7 @@ $.widget( "ui.dialog", {
                        handles: resizeHandles,
                        start: function( event, ui ) {
                                $( this ).addClass("ui-dialog-resizing");
+                               that._blockFrames();
                                that._trigger( "resizeStart", event, filteredUi( ui ) );
                        },
                        resize: function( event, ui ) {
@@ -500,6 +503,7 @@ $.widget( "ui.dialog", {
                                options.height = $( this ).height();
                                options.width = $( this ).width();
                                $( this ).removeClass("ui-dialog-resizing");
+                               that._unblockFrames();
                                that._trigger( "resizeStop", event, filteredUi( ui ) );
                        }
                })
@@ -666,6 +670,28 @@ $.widget( "ui.dialog", {
                }
        },
 
+       _blockFrames: function() {
+               this.iframeBlocks = this.document.find( "iframe" ).map(function() {
+                       var iframe = $( this );
+
+                       return $( "<div>" )
+                               .css({
+                                       position: "absolute",
+                                       width: iframe.outerWidth(),
+                                       height: iframe.outerHeight()
+                               })
+                               .appendTo( iframe.parent() )
+                               .offset( iframe.offset() )[0];
+               });
+       },
+
+       _unblockFrames: function() {
+               if ( this.iframeBlocks ) {
+                       this.iframeBlocks.remove();
+                       delete this.iframeBlocks;
+               }
+       },
+
        _createOverlay: function() {
                if ( !this.options.modal ) {
                        return;