diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2009-09-19 14:03:53 +0000 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2009-09-19 14:03:53 +0000 |
commit | 122a6cdd5fbc1b3e1769bb4669dc68e7d8279177 (patch) | |
tree | 2aee02df4825533a300ed0c837a6b4cd015a8b0a | |
parent | c59c0421ba482dc9c2a0a47888564ec98659ccda (diff) | |
download | jquery-ui-122a6cdd5fbc1b3e1769bb4669dc68e7d8279177.tar.gz jquery-ui-122a6cdd5fbc1b3e1769bb4669dc68e7d8279177.zip |
dialog: fixed _position regression; wrote a test for the default positon, which still needs some tuning
-rw-r--r-- | tests/unit/dialog/dialog_options.js | 11 | ||||
-rw-r--r-- | ui/jquery.ui.dialog.js | 55 |
2 files changed, 38 insertions, 28 deletions
diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index 7254431fd..761f03b27 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -240,7 +240,16 @@ test("modal", function() { ok(false, 'missing test - untested code is broken code'); }); -test("position", function() { +test("position, default center on window", function() { + var el = $('<div></div>').dialog(); + var offset = el.parent().offset(); + // use .position() instead to avoid replicating center-logic? + same(offset.left, Math.floor($(window).width() / 2 - el.parent().width() / 2)); + same(offset.top, Math.floor($(window).height() / 2 - el.parent().height() / 2)); + el.remove(); +}); + +test("position, others", function() { ok(false, 'missing test - untested code is broken code'); }); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index ddeeda7c6..702b30a92 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -382,35 +382,36 @@ $.widget("ui.dialog", { // deep extending converts arrays to objects in jQuery <= 1.3.2 :-( // if (typeof position == 'string' || $.isArray(position)) { // myAt = $.isArray(position) ? position : position.split(' '); - if (!position || (typeof positon != "string" && typeof positon != "object")) - return - if (typeof position == 'string' || '0' in position) { - myAt = position.split ? position.split(' ') : [position[0], position[1]]; - if (myAt.length == 1) { - myAt[1] = myAt[0]; - } - $.each(['left', 'top'], function(i, offsetPosition) { - if (+myAt[i] == myAt[i]) { - offset[i] = myAt[i]; - myAt[i] = offsetPosition; + if (position && (typeof positon == "string" || typeof positon == "object")) { + if (typeof position == 'string' || '0' in position) { + myAt = position.split ? position.split(' ') : [position[0], position[1]]; + if (myAt.length == 1) { + myAt[1] = myAt[0]; + } + + $.each(['left', 'top'], function(i, offsetPosition) { + if (+myAt[i] == myAt[i]) { + offset[i] = myAt[i]; + myAt[i] = offsetPosition; + } + }); + } else { + if ('left' in position) { + myAt[0] = 'left'; + offset[0] = position.left; + } else if ('right' in position) { + myAt[0] = 'right'; + offset[0] = -position.right; + } + + if ('top' in position) { + myAt[1] = 'top'; + offset[1] = position.top; + } else if ('bottom' in position) { + myAt[1] = 'bottom'; + offset[1] = -position.bottom; } - }); - } else { - if ('left' in position) { - myAt[0] = 'left'; - offset[0] = position.left; - } else if ('right' in position) { - myAt[0] = 'right'; - offset[0] = -position.right; - } - - if ('top' in position) { - myAt[1] = 'top'; - offset[1] = position.top; - } else if ('bottom' in position) { - myAt[1] = 'bottom'; - offset[1] = -position.bottom; } } |