/*!
- * Ext JS Library 3.1.0
- * Copyright(c) 2006-2009 Ext JS, LLC
- * licensing@extjs.com
- * http://www.extjs.com/license
+ * Ext JS Library 3.3.1
+ * Copyright(c) 2006-2010 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
*/
/**
* @class Ext.form.FormPanel
// private
beforeDestroy : function(){
this.stopMonitoring();
- /*
- * Don't move this behaviour to BasicForm because it can be used
- * on it's own.
- */
- Ext.destroy(this.form);
- this.form.items.clear();
+ this.form.destroy(true);
Ext.FormPanel.superclass.beforeDestroy.call(this);
},
},
// private
- processRemove : function(c){
- // If a single form Field, remove it
- if(this.isField(c)){
- this.form.remove(c);
- // If a Container, its already destroyed by the time it gets here. Remove any references to destroyed fields.
- }else if(c.findBy){
- var isDestroyed = function(o) {
- return !!o.isDestroyed;
+ processRemove: function(c){
+ if(!this.destroying){
+ // If a single form Field, remove it
+ if(this.isField(c)){
+ this.form.remove(c);
+ // If a Container, its already destroyed by the time it gets here. Remove any references to destroyed fields.
+ }else if (c.findBy){
+ Ext.each(c.findBy(this.isField), this.form.remove, this.form);
+ /*
+ * This isn't the most efficient way of getting rid of the items, however it's the most
+ * correct, which in this case is most important.
+ */
+ this.form.cleanDestroyed();
}
- this.form.items.filterBy(isDestroyed, this.form).each(this.form.remove, this.form);
}
},