aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2011-02-11 08:53:43 -0500
committerScott González <scott.gonzalez@gmail.com>2011-02-11 08:53:43 -0500
commit1cb1b9cef7cfc4bd77c619f4ee55b5d3fc99419a (patch)
tree1564df0c338bf19408921465d3a645d7495e59a2
parent5b104dbcefdfa708d80e8babea0539617167012d (diff)
downloadjquery-ui-1cb1b9cef7cfc4bd77c619f4ee55b5d3fc99419a.tar.gz
jquery-ui-1cb1b9cef7cfc4bd77c619f4ee55b5d3fc99419a.zip
Widget: Handle super calls when method calls go up and down the inheritance chain.
-rw-r--r--ui/jquery.ui.spinner.js9
-rw-r--r--ui/jquery.ui.widget.js12
2 files changed, 13 insertions, 8 deletions
diff --git a/ui/jquery.ui.spinner.js b/ui/jquery.ui.spinner.js
index 0219abb8b..6d4d10d51 100644
--- a/ui/jquery.ui.spinner.js
+++ b/ui/jquery.ui.spinner.js
@@ -285,16 +285,11 @@ $.widget('ui.spinner', {
this.buttons.button("enable");
}
}
- // TODO see below
- //this._super( "_setOption", key, value );
- $.Widget.prototype._setOption.apply( this, arguments );
+ this._super( "_setOption", key, value );
},
_setOptions: function( options ) {
- // TODO _super doesn't handle inheritance with more then one subclass
- // spinner subclass will have spinner as base, calling spinner._setOptions infinitely
- //this._super( "_setOptions", options );
- $.Widget.prototype._setOptions.apply( this, arguments );
+ this._super( "_setOptions", options );
if ( "value" in options ) {
this._format( this.options.value );
}
diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js
index e09701d7b..0a4759023 100644
--- a/ui/jquery.ui.widget.js
+++ b/ui/jquery.ui.widget.js
@@ -66,9 +66,19 @@ $.widget = function( name, base, prototype ) {
return base.prototype[ method ].apply( this, args );
};
return function() {
+ var __super = this._super,
+ __superApply = this._superApply,
+ returnValue;
+
this._super = _super;
this._superApply = _superApply;
- return value.apply( this, arguments );
+
+ returnValue = value.apply( this, arguments );
+
+ this._super = __super;
+ this._superApply = __superApply;
+
+ return returnValue;
};
}());
}