From: Steffen Kamper Date: Thu, 3 Feb 2011 23:02:50 +0000 (+0000) Subject: Fixed bug #17407: Pagetree cause endless loop in ExtJS events X-Git-Tag: TYPO3_4-5-1~91 X-Git-Url: http://git.typo3.org/Packages/TYPO3.CMS.git/commitdiff_plain/96470456fc2f00f4d66404388bc35f2ed4ede90d Fixed bug #17407: Pagetree cause endless loop in ExtJS events git-svn-id: https://svn.typo3.org/TYPO3v4/Core/branches/TYPO3_4-5@10380 709f56b5-9817-0410-a4d7-c38de5d9e867 --- diff --git a/ChangeLog b/ChangeLog index 62420fbd9d93..c86b71082d85 100755 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2011-02-03 Steffen Kamper + + * Fixed bug #17407: Pagetree cause endless loop in ExtJS events + 2011-02-02 Steffen Kamper * Fixed bug #17434: Pagetree: when start edit, the text should be selected diff --git a/t3lib/js/extjs/components/pagetree/javascript/app.js b/t3lib/js/extjs/components/pagetree/javascript/app.js index 1c2489d83088..58d328dcb094 100644 --- a/t3lib/js/extjs/components/pagetree/javascript/app.js +++ b/t3lib/js/extjs/components/pagetree/javascript/app.js @@ -63,23 +63,6 @@ TYPO3.Components.PageTree.App = Ext.extend(Ext.Panel, { */ activeTree: null, - /** - * Listeners - * - * The afterlayout wizard relayoutes the navigation container to fix some nasty - * scrollbar issues. - * - * @type {Object} - */ - listeners: { - afterlayout: { - fn: function() { - this.ownerCt.doLayout(); - }, - buffer: 250 - } - }, - /** * Initializes the application * @@ -187,6 +170,11 @@ TYPO3.Components.PageTree.App = Ext.extend(Ext.Panel, { if (TYPO3.Components.PageTree.Configuration.indicator !== '') { this.addIndicatorItems(); } + this.doLayout(); + + this.ownerCt.on('resize', function() { + this.doLayout(); + }); }, this); TYPO3.Components.PageTree.App.superclass.initComponent.apply(this, arguments); @@ -269,11 +257,15 @@ TYPO3.Components.PageTree.App = Ext.extend(Ext.Panel, { } component.listeners.afterrender = { + scope: this, fn: this.afterTopPanelItemAdded } } - return Ext.getCmp(this.id + '-indicatorBar').add(component); + var indicator = Ext.getCmp(this.id + '-indicatorBar').add(component); + this.doLayout(); + + return indicator; }, /** @@ -285,6 +277,7 @@ TYPO3.Components.PageTree.App = Ext.extend(Ext.Panel, { afterTopPanelItemAdded: function(component) { var topPanelItems = Ext.getCmp(this.id + '-topPanelItems'); topPanelItems.setHeight(topPanelItems.getHeight() + component.getHeight() + 3); + this.doLayout(); }, /** @@ -297,6 +290,7 @@ TYPO3.Components.PageTree.App = Ext.extend(Ext.Panel, { var topPanelItems = Ext.getCmp(this.id + '-topPanelItems'); topPanelItems.setHeight(topPanelItems.getHeight() - component.getHeight() - 3); Ext.getCmp(this.id + '-indicatorBar').remove(component); + this.doLayout(); }, /** diff --git a/t3lib/js/extjs/components/pagetree/javascript/deletiondropzone.js b/t3lib/js/extjs/components/pagetree/javascript/deletiondropzone.js index a5a2ea7c376a..68000c39a060 100644 --- a/t3lib/js/extjs/components/pagetree/javascript/deletiondropzone.js +++ b/t3lib/js/extjs/components/pagetree/javascript/deletiondropzone.js @@ -215,6 +215,7 @@ TYPO3.Components.PageTree.DeletionDropZone = Ext.extend(Ext.Panel, { '', false ); + this.app.doLayout(); ++this.amountOfDrops; (function() { @@ -289,6 +290,7 @@ TYPO3.Components.PageTree.DeletionDropZone = Ext.extend(Ext.Panel, { this.setHeight(35); this.updateText(TYPO3.Components.PageTree.LLL.dropToRemove, false); this.updateIcon(TYPO3.Components.PageTree.Sprites.TrashCan); + this.app.doLayout(); }, /** @@ -306,6 +308,7 @@ TYPO3.Components.PageTree.DeletionDropZone = Ext.extend(Ext.Panel, { } this.setHeight(35); this.updateText(TYPO3.Components.PageTree.LLL.dropZoneElementRestored); + this.app.doLayout(); (function() { if (this.textClickHandler) { diff --git a/t3lib/js/extjs/components/pagetree/javascript/tree.js b/t3lib/js/extjs/components/pagetree/javascript/tree.js index 06c695c2be0b..c7bc06be4a8d 100644 --- a/t3lib/js/extjs/components/pagetree/javascript/tree.js +++ b/t3lib/js/extjs/components/pagetree/javascript/tree.js @@ -107,7 +107,7 @@ TYPO3.Components.PageTree.Tree = Ext.extend(Ext.tree.TreePanel, { /** * Main applicaton - * + * * @cfg {TYPO3.Components.PageTree.App} */ app: null, @@ -435,6 +435,7 @@ TYPO3.Components.PageTree.Tree = Ext.extend(Ext.tree.TreePanel, { stopDd: function() { if (this.deletionDropZoneId) { Ext.getCmp(this.deletionDropZoneId).hide(); + this.app.doLayout(); } }, @@ -453,6 +454,7 @@ TYPO3.Components.PageTree.Tree = Ext.extend(Ext.tree.TreePanel, { (nodeHasChildNodes && TYPO3.Components.PageTree.Configuration.canDeleteRecursivly) )) { Ext.getCmp(this.deletionDropZoneId).show(); + this.app.doLayout(); } this.initDDProxyElement(); },