From b4c5a462330d9f2bf5a76d0d54a42156b3442b28 Mon Sep 17 00:00:00 2001 From: Paul Uithol Date: Thu, 19 May 2011 17:11:51 +0200 Subject: [PATCH 1/9] Add the possibility to use '$( ".selector" ).dialog( "option", "zIndex", 3999 );', as noted in the docs on http://jqueryui.com/demos/dialog/ . --- tests/unit/dialog/dialog_options.js | 27 +++++++++++++++++++++++++++ ui/jquery.ui.dialog.js | 3 +++ 2 files changed, 30 insertions(+) diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index 5705da07907..041ca554b61 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -441,4 +441,31 @@ test("width", function() { el.remove(); }); +test("zIndex", function() { + expect(6); + + el = $('
').dialog( { autoOpen: false } ); + equals(dlg().css( 'zIndex' ), 1000, "default zIndex"); + el.dialog("open"); + equals(dlg().css( 'zIndex' ), $.ui.dialog.maxZ, "default zIndex"); + el.remove(); + + el = $('
').dialog(); + equals(dlg().css( 'zIndex' ), $.ui.dialog.maxZ, "default zIndex"); + el.remove(); + + // The z-index will always be 1 higher than requested if 'moveToTop' gets called, such as when 'autoOpen' is true. + el = $('
').dialog({zIndex: 2932 }); + equals(dlg().css('zIndex'), 2932 + 1, "explicit zIndex"); + el.dialog('option', 'zIndex', 1748); + equals(dlg().css('zIndex'), 1748, 'explicit zIndex after init'); + el.remove(); + + // At the moment, an explicit zIndex option lower than $.ui.dialog.maxZ will be ignored since 'open' calls + // 'moveToTop'. Is this the desired behavior? + el = $('
').dialog({zIndex: 1584 }); + equals(dlg().css('zIndex'), $.ui.dialog.maxZ, "explicit zIndex, lower than $.ui.dialog.maxZ, is ignored"); + el.remove(); +}); + })(jQuery); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index dc2849155e0..e521d62a269 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -595,6 +595,9 @@ $.widget("ui.dialog", { $( ".ui-dialog-title", self.uiDialogTitlebar ) .html( "" + ( value || " " ) ); break; + case "zIndex": + uiDialog.css({ zIndex: value }); + break; } this._super( "_setOption", key, value ); From c0b88f30ab9687e432b72e69fcf5702c6ad38fe3 Mon Sep 17 00:00:00 2001 From: Paul Uithol Date: Fri, 20 May 2011 09:18:00 +0200 Subject: [PATCH 2/9] Take '$.ui.dialog.maxZ' and 'self.overlay' into account. --- tests/unit/dialog/dialog_options.js | 13 +++++++++---- ui/jquery.ui.dialog.js | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index 041ca554b61..9ec201e5038 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -442,7 +442,7 @@ test("width", function() { }); test("zIndex", function() { - expect(6); + expect(9); el = $('
').dialog( { autoOpen: false } ); equals(dlg().css( 'zIndex' ), 1000, "default zIndex"); @@ -454,11 +454,16 @@ test("zIndex", function() { equals(dlg().css( 'zIndex' ), $.ui.dialog.maxZ, "default zIndex"); el.remove(); - // The z-index will always be 1 higher than requested if 'moveToTop' gets called, such as when 'autoOpen' is true. - el = $('
').dialog({zIndex: 2932 }); - equals(dlg().css('zIndex'), 2932 + 1, "explicit zIndex"); + // The z-index will be 1 higher than requested if 'moveToTop' gets called, such as when 'autoOpen' is true. + newZIndex = $.ui.dialog.maxZ + 2932; + el = $('
').dialog({zIndex: newZIndex }); + equals(dlg().css('zIndex'), newZIndex + 1, "explicit zIndex"); + equals( el.dialog( 'option', 'zIndex' ), newZIndex, 'get works for zIndex' ); + equals( newZIndex + 1, $.ui.dialog.maxZ, '$.ui.dialog.maxZ is updated to the new value' ); + el.dialog('option', 'zIndex', 1748); equals(dlg().css('zIndex'), 1748, 'explicit zIndex after init'); + equals( el.dialog( 'option', 'zIndex' ), 1748 ); el.remove(); // At the moment, an explicit zIndex option lower than $.ui.dialog.maxZ will be ignored since 'open' calls diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index e521d62a269..23445fd2765 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -596,7 +596,20 @@ $.widget("ui.dialog", { .html( "" + ( value || " " ) ); break; case "zIndex": - uiDialog.css({ zIndex: value }); + if ( value > $.ui.dialog.maxZ ) { + $.ui.dialog.maxZ = value; + + if ( self.overlay ) { + $.ui.dialog.maxZ += 1; + $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; + } + + value = $.ui.dialog.maxZ; + } + + self.overlay && self.overlay.$el.css( "z-index", value > 0 ? value : 0 ); + uiDialog.css( "z-index", value ); + break; } From 6a9fc89c2ff7a66cf199881e2b0e69eb9a15a26e Mon Sep 17 00:00:00 2001 From: Paul Uithol Date: Thu, 19 May 2011 17:11:51 +0200 Subject: [PATCH 3/9] Add the possibility to use '$( ".selector" ).dialog( "option", "zIndex", 3999 );', as noted in the docs on http://jqueryui.com/demos/dialog/ . --- tests/unit/dialog/dialog_options.js | 27 +++++++++++++++++++++++++++ ui/jquery.ui.dialog.js | 3 +++ 2 files changed, 30 insertions(+) diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index 5705da07907..041ca554b61 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -441,4 +441,31 @@ test("width", function() { el.remove(); }); +test("zIndex", function() { + expect(6); + + el = $('
').dialog( { autoOpen: false } ); + equals(dlg().css( 'zIndex' ), 1000, "default zIndex"); + el.dialog("open"); + equals(dlg().css( 'zIndex' ), $.ui.dialog.maxZ, "default zIndex"); + el.remove(); + + el = $('
').dialog(); + equals(dlg().css( 'zIndex' ), $.ui.dialog.maxZ, "default zIndex"); + el.remove(); + + // The z-index will always be 1 higher than requested if 'moveToTop' gets called, such as when 'autoOpen' is true. + el = $('
').dialog({zIndex: 2932 }); + equals(dlg().css('zIndex'), 2932 + 1, "explicit zIndex"); + el.dialog('option', 'zIndex', 1748); + equals(dlg().css('zIndex'), 1748, 'explicit zIndex after init'); + el.remove(); + + // At the moment, an explicit zIndex option lower than $.ui.dialog.maxZ will be ignored since 'open' calls + // 'moveToTop'. Is this the desired behavior? + el = $('
').dialog({zIndex: 1584 }); + equals(dlg().css('zIndex'), $.ui.dialog.maxZ, "explicit zIndex, lower than $.ui.dialog.maxZ, is ignored"); + el.remove(); +}); + })(jQuery); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 0eba39842ba..d235f228009 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -596,6 +596,9 @@ $.widget("ui.dialog", { $( ".ui-dialog-title", self.uiDialogTitlebar ) .html( "" + ( value || " " ) ); break; + case "zIndex": + uiDialog.css({ zIndex: value }); + break; } this._super( "_setOption", key, value ); From f48b4c6384b37063ef4d3f5e7a3478942fb90cf1 Mon Sep 17 00:00:00 2001 From: Paul Uithol Date: Fri, 20 May 2011 09:18:00 +0200 Subject: [PATCH 4/9] Take '$.ui.dialog.maxZ' and 'self.overlay' into account. --- tests/unit/dialog/dialog_options.js | 13 +++++++++---- ui/jquery.ui.dialog.js | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index 041ca554b61..9ec201e5038 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -442,7 +442,7 @@ test("width", function() { }); test("zIndex", function() { - expect(6); + expect(9); el = $('
').dialog( { autoOpen: false } ); equals(dlg().css( 'zIndex' ), 1000, "default zIndex"); @@ -454,11 +454,16 @@ test("zIndex", function() { equals(dlg().css( 'zIndex' ), $.ui.dialog.maxZ, "default zIndex"); el.remove(); - // The z-index will always be 1 higher than requested if 'moveToTop' gets called, such as when 'autoOpen' is true. - el = $('
').dialog({zIndex: 2932 }); - equals(dlg().css('zIndex'), 2932 + 1, "explicit zIndex"); + // The z-index will be 1 higher than requested if 'moveToTop' gets called, such as when 'autoOpen' is true. + newZIndex = $.ui.dialog.maxZ + 2932; + el = $('
').dialog({zIndex: newZIndex }); + equals(dlg().css('zIndex'), newZIndex + 1, "explicit zIndex"); + equals( el.dialog( 'option', 'zIndex' ), newZIndex, 'get works for zIndex' ); + equals( newZIndex + 1, $.ui.dialog.maxZ, '$.ui.dialog.maxZ is updated to the new value' ); + el.dialog('option', 'zIndex', 1748); equals(dlg().css('zIndex'), 1748, 'explicit zIndex after init'); + equals( el.dialog( 'option', 'zIndex' ), 1748 ); el.remove(); // At the moment, an explicit zIndex option lower than $.ui.dialog.maxZ will be ignored since 'open' calls diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index d235f228009..00f2edc816f 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -597,7 +597,20 @@ $.widget("ui.dialog", { .html( "" + ( value || " " ) ); break; case "zIndex": - uiDialog.css({ zIndex: value }); + if ( value > $.ui.dialog.maxZ ) { + $.ui.dialog.maxZ = value; + + if ( self.overlay ) { + $.ui.dialog.maxZ += 1; + $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; + } + + value = $.ui.dialog.maxZ; + } + + self.overlay && self.overlay.$el.css( "z-index", value > 0 ? value : 0 ); + uiDialog.css( "z-index", value ); + break; } From c131c95932191abdf0a7becbd2dbe87c1cc5a826 Mon Sep 17 00:00:00 2001 From: Paul Uithol Date: Thu, 30 Jun 2011 16:07:45 +0200 Subject: [PATCH 5/9] Only increment 'maxZ' when the dialog is open --- ui/jquery.ui.dialog.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 00f2edc816f..07515349370 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -598,11 +598,14 @@ $.widget("ui.dialog", { break; case "zIndex": if ( value > $.ui.dialog.maxZ ) { - $.ui.dialog.maxZ = value; - - if ( self.overlay ) { - $.ui.dialog.maxZ += 1; - $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; + // Increment the 'maxZ' counters when this dialog is currently visible + if ( self.isOpen() ) { + $.ui.dialog.maxZ = value; + + if ( self.overlay ) { + $.ui.dialog.maxZ += 1; + $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; + } } value = $.ui.dialog.maxZ; From 9ca8d935252be9226873ea7a5fff33b7b3717ad3 Mon Sep 17 00:00:00 2001 From: Paul Uithol Date: Thu, 19 May 2011 17:11:51 +0200 Subject: [PATCH 6/9] Add the possibility to use '$( ".selector" ).dialog( "option", "zIndex", 3999 );', as noted in the docs on http://jqueryui.com/demos/dialog/ . --- tests/unit/dialog/dialog_options.js | 27 +++++++++++++++++++++++++++ ui/jquery.ui.dialog.js | 3 +++ 2 files changed, 30 insertions(+) diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index 5705da07907..041ca554b61 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -441,4 +441,31 @@ test("width", function() { el.remove(); }); +test("zIndex", function() { + expect(6); + + el = $('
').dialog( { autoOpen: false } ); + equals(dlg().css( 'zIndex' ), 1000, "default zIndex"); + el.dialog("open"); + equals(dlg().css( 'zIndex' ), $.ui.dialog.maxZ, "default zIndex"); + el.remove(); + + el = $('
').dialog(); + equals(dlg().css( 'zIndex' ), $.ui.dialog.maxZ, "default zIndex"); + el.remove(); + + // The z-index will always be 1 higher than requested if 'moveToTop' gets called, such as when 'autoOpen' is true. + el = $('
').dialog({zIndex: 2932 }); + equals(dlg().css('zIndex'), 2932 + 1, "explicit zIndex"); + el.dialog('option', 'zIndex', 1748); + equals(dlg().css('zIndex'), 1748, 'explicit zIndex after init'); + el.remove(); + + // At the moment, an explicit zIndex option lower than $.ui.dialog.maxZ will be ignored since 'open' calls + // 'moveToTop'. Is this the desired behavior? + el = $('
').dialog({zIndex: 1584 }); + equals(dlg().css('zIndex'), $.ui.dialog.maxZ, "explicit zIndex, lower than $.ui.dialog.maxZ, is ignored"); + el.remove(); +}); + })(jQuery); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 493ed07e676..9523d2d95a0 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -595,6 +595,9 @@ $.widget("ui.dialog", { $( ".ui-dialog-title", self.uiDialogTitlebar ) .html( "" + ( value || " " ) ); break; + case "zIndex": + uiDialog.css({ zIndex: value }); + break; } this._super( "_setOption", key, value ); From d9750c81668cacf325c3b9dec7ee4dac2c6e978c Mon Sep 17 00:00:00 2001 From: Paul Uithol Date: Fri, 20 May 2011 09:18:00 +0200 Subject: [PATCH 7/9] Take '$.ui.dialog.maxZ' and 'self.overlay' into account. --- tests/unit/dialog/dialog_options.js | 13 +++++++++---- ui/jquery.ui.dialog.js | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index 041ca554b61..9ec201e5038 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -442,7 +442,7 @@ test("width", function() { }); test("zIndex", function() { - expect(6); + expect(9); el = $('
').dialog( { autoOpen: false } ); equals(dlg().css( 'zIndex' ), 1000, "default zIndex"); @@ -454,11 +454,16 @@ test("zIndex", function() { equals(dlg().css( 'zIndex' ), $.ui.dialog.maxZ, "default zIndex"); el.remove(); - // The z-index will always be 1 higher than requested if 'moveToTop' gets called, such as when 'autoOpen' is true. - el = $('
').dialog({zIndex: 2932 }); - equals(dlg().css('zIndex'), 2932 + 1, "explicit zIndex"); + // The z-index will be 1 higher than requested if 'moveToTop' gets called, such as when 'autoOpen' is true. + newZIndex = $.ui.dialog.maxZ + 2932; + el = $('
').dialog({zIndex: newZIndex }); + equals(dlg().css('zIndex'), newZIndex + 1, "explicit zIndex"); + equals( el.dialog( 'option', 'zIndex' ), newZIndex, 'get works for zIndex' ); + equals( newZIndex + 1, $.ui.dialog.maxZ, '$.ui.dialog.maxZ is updated to the new value' ); + el.dialog('option', 'zIndex', 1748); equals(dlg().css('zIndex'), 1748, 'explicit zIndex after init'); + equals( el.dialog( 'option', 'zIndex' ), 1748 ); el.remove(); // At the moment, an explicit zIndex option lower than $.ui.dialog.maxZ will be ignored since 'open' calls diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 9523d2d95a0..97748de818d 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -596,7 +596,20 @@ $.widget("ui.dialog", { .html( "" + ( value || " " ) ); break; case "zIndex": - uiDialog.css({ zIndex: value }); + if ( value > $.ui.dialog.maxZ ) { + $.ui.dialog.maxZ = value; + + if ( self.overlay ) { + $.ui.dialog.maxZ += 1; + $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; + } + + value = $.ui.dialog.maxZ; + } + + self.overlay && self.overlay.$el.css( "z-index", value > 0 ? value : 0 ); + uiDialog.css( "z-index", value ); + break; } From 156df8f78cf62065d86c2fa08d76d1f5679cf6ec Mon Sep 17 00:00:00 2001 From: Paul Uithol Date: Thu, 30 Jun 2011 16:07:45 +0200 Subject: [PATCH 8/9] Only increment 'maxZ' when the dialog is open --- ui/jquery.ui.dialog.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 97748de818d..7a7ea1d565b 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -597,11 +597,14 @@ $.widget("ui.dialog", { break; case "zIndex": if ( value > $.ui.dialog.maxZ ) { - $.ui.dialog.maxZ = value; - - if ( self.overlay ) { - $.ui.dialog.maxZ += 1; - $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; + // Increment the 'maxZ' counters when this dialog is currently visible + if ( self.isOpen() ) { + $.ui.dialog.maxZ = value; + + if ( self.overlay ) { + $.ui.dialog.maxZ += 1; + $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; + } } value = $.ui.dialog.maxZ; From 83d32c13f9bc4339d21714fcc3829a86625633ae Mon Sep 17 00:00:00 2001 From: Paul Uithol Date: Tue, 2 Aug 2011 14:03:53 +0200 Subject: [PATCH 9/9] The zIndex of a dialog's overlay should be one less than that of the dialog. --- tests/unit/dialog/dialog_options.js | 2 +- ui/jquery.ui.dialog.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index 9ec201e5038..852874a35fd 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -469,7 +469,7 @@ test("zIndex", function() { // At the moment, an explicit zIndex option lower than $.ui.dialog.maxZ will be ignored since 'open' calls // 'moveToTop'. Is this the desired behavior? el = $('
').dialog({zIndex: 1584 }); - equals(dlg().css('zIndex'), $.ui.dialog.maxZ, "explicit zIndex, lower than $.ui.dialog.maxZ, is ignored"); + equals(dlg().css('zIndex'), $.ui.dialog.maxZ, "explicit zIndex at instantiation below $.ui.dialog.maxZ is ignored"); el.remove(); }); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 7a7ea1d565b..4740ff59025 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -602,15 +602,15 @@ $.widget("ui.dialog", { $.ui.dialog.maxZ = value; if ( self.overlay ) { - $.ui.dialog.maxZ += 1; $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; + $.ui.dialog.maxZ += 1; } } value = $.ui.dialog.maxZ; } - self.overlay && self.overlay.$el.css( "z-index", value > 0 ? value : 0 ); + self.overlay && self.overlay.$el.css( "z-index", value - 1 ); uiDialog.css( "z-index", value ); break;