aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2009-09-19 14:03:53 +0000
committerJörn Zaefferer <joern.zaefferer@gmail.com>2009-09-19 14:03:53 +0000
commit122a6cdd5fbc1b3e1769bb4669dc68e7d8279177 (patch)
tree2aee02df4825533a300ed0c837a6b4cd015a8b0a
parentc59c0421ba482dc9c2a0a47888564ec98659ccda (diff)
downloadjquery-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.js11
-rw-r--r--ui/jquery.ui.dialog.js55
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;
}
}