dialog: fixed _position regression; wrote a test for the default positon, which still needs some tuning

This commit is contained in:
Jörn Zaefferer 2009-09-19 14:03:53 +00:00
parent c59c0421ba
commit 122a6cdd5f
2 changed files with 38 additions and 28 deletions

View File

@ -240,7 +240,16 @@ test("modal", function() {
ok(false, 'missing test - untested code is broken code'); 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'); ok(false, 'missing test - untested code is broken code');
}); });

View File

@ -382,35 +382,36 @@ $.widget("ui.dialog", {
// deep extending converts arrays to objects in jQuery <= 1.3.2 :-( // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
// if (typeof position == 'string' || $.isArray(position)) { // if (typeof position == 'string' || $.isArray(position)) {
// myAt = $.isArray(position) ? position : position.split(' '); // 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 (position && (typeof positon == "string" || typeof positon == "object")) {
if (+myAt[i] == myAt[i]) { if (typeof position == 'string' || '0' in position) {
offset[i] = myAt[i]; myAt = position.split ? position.split(' ') : [position[0], position[1]];
myAt[i] = offsetPosition; 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;
} }
} }