From 171c7c067106f6b35b2f35829a7d847858a36c74 Mon Sep 17 00:00:00 2001 From: Scott González Date: Sat, 31 Jan 2009 04:33:36 +0000 Subject: Dialog: Shadow cleanup. - Don't hide shadow during drag/resize in IE6 (let the user do this one their own). - Let users modify the shadow option after init. .parents('.ui-dialog') .bind('dragstart resizestart', function() { $(this).find('.ui-dialog-content').dialog('option', 'shadow', false); }) .bind('dragstop resizestop', function() { $(this).find('.ui-dialog-content').dialog('option', 'shadow', true); }); --- ui/ui.dialog.js | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/ui/ui.dialog.js b/ui/ui.dialog.js index 8c8f8320f..58f8457b8 100644 --- a/ui/ui.dialog.js +++ b/ui/ui.dialog.js @@ -244,8 +244,7 @@ $.widget("ui.dialog", { .filter(':first') .focus(); - if(options.shadow) - this._createShadow(); + (options.shadow && this._createShadow()); this._trigger('open', event); this._isOpen = true; @@ -306,16 +305,14 @@ $.widget("ui.dialog", { containment: 'document', start: function() { (options.dragStart && options.dragStart.apply(self.element[0], arguments)); - if($.browser.msie && $.browser.version < 7 && self.shadow) self.shadow.hide(); }, drag: function() { (options.drag && options.drag.apply(self.element[0], arguments)); - self._refreshShadow(1); + self._refreshShadow(); }, stop: function() { (options.dragStop && options.dragStop.apply(self.element[0], arguments)); $.ui.dialog.overlay.resize(); - if($.browser.msie && $.browser.version < 7 && self.shadow) self.shadow.show(); self._refreshShadow(); } }); @@ -339,17 +336,15 @@ $.widget("ui.dialog", { minHeight: options.minHeight, start: function() { (options.resizeStart && options.resizeStart.apply(self.element[0], arguments)); - if($.browser.msie && $.browser.version < 7 && self.shadow) self.shadow.hide(); }, resize: function() { (options.resize && options.resize.apply(self.element[0], arguments)); - self._refreshShadow(1); + self._refreshShadow(); }, handles: resizeHandles, stop: function() { (options.resizeStop && options.resizeStop.apply(self.element[0], arguments)); $.ui.dialog.overlay.resize(); - if($.browser.msie && $.browser.version < 7 && self.shadow) self.shadow.show(); self._refreshShadow(); } }) @@ -440,7 +435,11 @@ $.widget("ui.dialog", { // currently non-resizable, becoming resizable (isResizable || this._makeResizable(value)); - + break; + case "shadow": + (value + ? this.shadow || this._createShadow() + : this.shadow && this._destroyShadow()); break; case "title": $(".ui-dialog-title", this.uiDialogTitlebar).html(value || ' '); @@ -489,17 +488,16 @@ $.widget("ui.dialog", { return this.shadow; }, - _refreshShadow: function(dragging) { - // IE6 is simply to slow to handle the reflow in a good way, so - // resizing only happens on stop, and the shadow is hidden during drag/resize - if(dragging && $.browser.msie && $.browser.version < 7) return; + _refreshShadow: function() { + if (!this.options.shadow) { return; } - var offset = this.uiDialog.offset(); + var uiDialog = this.uiDialog, + offset = uiDialog.offset(); this.shadow.css({ left: offset.left, top: offset.top, - width: this.uiDialog.outerWidth(), - height: this.uiDialog.outerHeight() + width: uiDialog.outerWidth(), + height: uiDialog.outerHeight() }); }, @@ -507,7 +505,6 @@ $.widget("ui.dialog", { this.shadow.remove(); this.shadow = null; } - }); $.extend($.ui.dialog, { -- cgit v1.2.3