Search and Top Navigation
Ticket #4957: patch-4957.patch
File patch-4957.patch, 5.5 KB (added by jzaefferer, January 21, 2010 09:09PM UTC)
Index: ui/jquery.ui.core.js
===================================================================
--- ui/jquery.ui.core.js (revision 3717)
+++ ui/jquery.ui.core.js (working copy)
@@ -109,10 +109,10 @@
ret = $(context).parent();
} else if (value == 'clone') {
ret = $(context).clone().removeAttr('id');
- } else if (value == 'window') {
- ret = $(context).window(); // requires .window() plugin
+ } else if (value == 'window' || value === window) {
+ ret = $(window);
} else if (value.nodeType || typeof value == 'string' || $.isArray(value)) {
- ret = $(value, context);
+ ret = $(value);
} else if ($.isFunction(value)) {
ret = value(context);
}
@@ -214,12 +214,6 @@
}
return 0;
- },
-
- window: function() {
- return this.pushStack($.unique($.map(this, function() {
- return this.ownerDocument.defaultView;
- })));
}
});
Index: ui/jquery.ui.position.js
===================================================================
--- ui/jquery.ui.position.js (revision 3712)
+++ ui/jquery.ui.position.js (working copy)
@@ -6,6 +6,9 @@
* and GPL (GPL-LICENSE.txt) licenses.
*
* http://docs.jquery.com/UI/Position
+ *
+ * Depends:
+ * jquery.ui.core.js
*/
(function($) {
@@ -25,31 +28,8 @@
// make a copy, we don't want to modify arguments
options = $.extend({}, options);
- var target = $(options.of),
- collision = (options.collision || 'flip').split(' '),
- offset = options.offset ? options.offset.split(' ') : [0, 0],
- targetWidth,
- targetHeight,
- basePosition;
-
- if (options.of.nodeType === 9) {
- targetWidth = target.width();
- targetHeight = target.height();
- basePosition = { top: 0, left: 0 };
- } else if (options.of.scrollTo && options.of.document) {
- targetWidth = target.width();
- targetHeight = target.height();
- basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
- } else if (options.of.preventDefault) {
- // force left top to allow flipping
- options.at = 'left top';
- targetWidth = targetHeight = 0;
- basePosition = { top: options.of.pageY, left: options.of.pageX };
- } else {
- targetWidth = target.outerWidth();
- targetHeight = target.outerHeight();
- basePosition = target.offset();
- }
+ var collision = (options.collision || 'flip').split(' '),
+ offset = options.offset ? options.offset.split(' ') : [0, 0];
// force my and at to have valid horizontal and veritcal positions
// if a value is missing or invalid, it will be converted to center
@@ -79,36 +59,57 @@
}
offset[1] = parseInt(offset[1], 10) || 0;
- switch (options.at[0]) {
- case 'right':
- basePosition.left += targetWidth;
- break;
- case horizontalDefault:
- basePosition.left += targetWidth / 2;
- break;
- }
-
- switch (options.at[1]) {
- case 'bottom':
- basePosition.top += targetHeight;
- break;
- case verticalDefault:
- basePosition.top += targetHeight / 2;
- break;
- }
-
- basePosition.left += offset[0];
- basePosition.top += offset[1];
-
return this.each(function() {
var elem = $(this),
elemWidth = elem.outerWidth(),
elemHeight = elem.outerHeight(),
- position = $.extend({}, basePosition),
- over,
myOffset,
- atOffset;
+ atOffset,
+ target = $.ui.element(options.of, this),
+ targetWidth,
+ targetHeight,
+ position;
+ if (target[0] && target[0].nodeType === 9) {
+ targetWidth = target.width();
+ targetHeight = target.height();
+ position = { top: 0, left: 0 };
+ } else if (target[0] && target[0].scrollTo && target[0].document) {
+ targetWidth = target.width();
+ targetHeight = target.height();
+ position = { top: target.scrollTop(), left: target.scrollLeft() };
+ } else if (options.of.preventDefault) {
+ // force left top to allow flipping
+ options.at = 'left top';
+ targetWidth = targetHeight = 0;
+ position = { top: options.of.pageY, left: options.of.pageX };
+ } else {
+ targetWidth = target.outerWidth();
+ targetHeight = target.outerHeight();
+ position = target.offset();
+ }
+
+ position.left += offset[0];
+ position.top += offset[1];
+
+ switch (options.at[0]) {
+ case 'right':
+ position.left += targetWidth;
+ break;
+ case horizontalDefault:
+ position.left += targetWidth / 2;
+ break;
+ }
+
+ switch (options.at[1]) {
+ case 'bottom':
+ position.top += targetHeight;
+ break;
+ case verticalDefault:
+ position.top += targetHeight / 2;
+ break;
+ }
+
switch (options.my[0]) {
case 'right':
position.left -= elemWidth;
Index: tests/unit/position/position.html
===================================================================
--- tests/unit/position/position.html (revision 3712)
+++ tests/unit/position/position.html (working copy)
@@ -4,6 +4,7 @@
jQuery UI Position Test Suite
+
Index: tests/unit/position/position_core.js
===================================================================
--- tests/unit/position/position_core.js (revision 3712)
+++ tests/unit/position/position_core.js (working copy)
@@ -129,7 +129,7 @@
$('#elx').position({
my: 'right bottom',
at: 'right bottom',
- of: window,
+ of: 'window',
collision: 'none'
});
same($('#elx').offset(), {
Download in other formats:
Original Format
File patch-4957.patch, 5.5 KB (added by jzaefferer, January 21, 2010 09:09PM UTC)
Index: ui/jquery.ui.core.js
===================================================================
--- ui/jquery.ui.core.js (revision 3717)
+++ ui/jquery.ui.core.js (working copy)
@@ -109,10 +109,10 @@
ret = $(context).parent();
} else if (value == 'clone') {
ret = $(context).clone().removeAttr('id');
- } else if (value == 'window') {
- ret = $(context).window(); // requires .window() plugin
+ } else if (value == 'window' || value === window) {
+ ret = $(window);
} else if (value.nodeType || typeof value == 'string' || $.isArray(value)) {
- ret = $(value, context);
+ ret = $(value);
} else if ($.isFunction(value)) {
ret = value(context);
}
@@ -214,12 +214,6 @@
}
return 0;
- },
-
- window: function() {
- return this.pushStack($.unique($.map(this, function() {
- return this.ownerDocument.defaultView;
- })));
}
});
Index: ui/jquery.ui.position.js
===================================================================
--- ui/jquery.ui.position.js (revision 3712)
+++ ui/jquery.ui.position.js (working copy)
@@ -6,6 +6,9 @@
* and GPL (GPL-LICENSE.txt) licenses.
*
* http://docs.jquery.com/UI/Position
+ *
+ * Depends:
+ * jquery.ui.core.js
*/
(function($) {
@@ -25,31 +28,8 @@
// make a copy, we don't want to modify arguments
options = $.extend({}, options);
- var target = $(options.of),
- collision = (options.collision || 'flip').split(' '),
- offset = options.offset ? options.offset.split(' ') : [0, 0],
- targetWidth,
- targetHeight,
- basePosition;
-
- if (options.of.nodeType === 9) {
- targetWidth = target.width();
- targetHeight = target.height();
- basePosition = { top: 0, left: 0 };
- } else if (options.of.scrollTo && options.of.document) {
- targetWidth = target.width();
- targetHeight = target.height();
- basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
- } else if (options.of.preventDefault) {
- // force left top to allow flipping
- options.at = 'left top';
- targetWidth = targetHeight = 0;
- basePosition = { top: options.of.pageY, left: options.of.pageX };
- } else {
- targetWidth = target.outerWidth();
- targetHeight = target.outerHeight();
- basePosition = target.offset();
- }
+ var collision = (options.collision || 'flip').split(' '),
+ offset = options.offset ? options.offset.split(' ') : [0, 0];
// force my and at to have valid horizontal and veritcal positions
// if a value is missing or invalid, it will be converted to center
@@ -79,36 +59,57 @@
}
offset[1] = parseInt(offset[1], 10) || 0;
- switch (options.at[0]) {
- case 'right':
- basePosition.left += targetWidth;
- break;
- case horizontalDefault:
- basePosition.left += targetWidth / 2;
- break;
- }
-
- switch (options.at[1]) {
- case 'bottom':
- basePosition.top += targetHeight;
- break;
- case verticalDefault:
- basePosition.top += targetHeight / 2;
- break;
- }
-
- basePosition.left += offset[0];
- basePosition.top += offset[1];
-
return this.each(function() {
var elem = $(this),
elemWidth = elem.outerWidth(),
elemHeight = elem.outerHeight(),
- position = $.extend({}, basePosition),
- over,
myOffset,
- atOffset;
+ atOffset,
+ target = $.ui.element(options.of, this),
+ targetWidth,
+ targetHeight,
+ position;
+ if (target[0] && target[0].nodeType === 9) {
+ targetWidth = target.width();
+ targetHeight = target.height();
+ position = { top: 0, left: 0 };
+ } else if (target[0] && target[0].scrollTo && target[0].document) {
+ targetWidth = target.width();
+ targetHeight = target.height();
+ position = { top: target.scrollTop(), left: target.scrollLeft() };
+ } else if (options.of.preventDefault) {
+ // force left top to allow flipping
+ options.at = 'left top';
+ targetWidth = targetHeight = 0;
+ position = { top: options.of.pageY, left: options.of.pageX };
+ } else {
+ targetWidth = target.outerWidth();
+ targetHeight = target.outerHeight();
+ position = target.offset();
+ }
+
+ position.left += offset[0];
+ position.top += offset[1];
+
+ switch (options.at[0]) {
+ case 'right':
+ position.left += targetWidth;
+ break;
+ case horizontalDefault:
+ position.left += targetWidth / 2;
+ break;
+ }
+
+ switch (options.at[1]) {
+ case 'bottom':
+ position.top += targetHeight;
+ break;
+ case verticalDefault:
+ position.top += targetHeight / 2;
+ break;
+ }
+
switch (options.my[0]) {
case 'right':
position.left -= elemWidth;
Index: tests/unit/position/position.html
===================================================================
--- tests/unit/position/position.html (revision 3712)
+++ tests/unit/position/position.html (working copy)
@@ -4,6 +4,7 @@
jQuery UI Position Test Suite
+
Index: tests/unit/position/position_core.js
===================================================================
--- tests/unit/position/position_core.js (revision 3712)
+++ tests/unit/position/position_core.js (working copy)
@@ -129,7 +129,7 @@
$('#elx').position({
my: 'right bottom',
at: 'right bottom',
- of: window,
+ of: 'window',
collision: 'none'
});
same($('#elx').offset(), {