Fixed bug #13597: htmlArea RTE: Toolbar select box does not close on click in editing...
authorStanislas Rolland <typo3@sjbr.ca>
Sun, 21 Feb 2010 23:56:45 +0000 (23:56 +0000)
committerStanislas Rolland <typo3@sjbr.ca>
Sun, 21 Feb 2010 23:56:45 +0000 (23:56 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@6961 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/sysext/rtehtmlarea/ChangeLog
typo3/sysext/rtehtmlarea/htmlarea/htmlarea.js

index 10fab34..921c53a 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -22,6 +22,7 @@
 
        * Added feature #13580: htmlArea RTE: Extjize the RTE
        * Fixed bug #13596: htmlArea RTE: Styling dropdowns grow on every use
+       * Fixed bug #13597: htmlArea RTE: Toolbar select box does not close on click in editing area
 
 2010-02-21  Benjamin Mack  <benni@typo3.org>
 
index 6f90ba4..508970e 100644 (file)
@@ -2,6 +2,7 @@
 
        * Added feature #13580: htmlArea RTE: Extjize the RTE
        * Fixed bug #13596: htmlArea RTE: Styling dropdowns grow on every use
+       * Fixed bug #13597: htmlArea RTE: Toolbar select box does not close on click in editing area
 
 2009-12-11  Stanislas Rolland  <typo3@sjbr.ca>
 
index 3a90bfa..454990c 100644 (file)
@@ -605,9 +605,7 @@ Ext.ux.form.HTMLAreaCombo = Ext.extend(Ext.form.ComboBox, {
                        // Monitor toolbar updates in order to refresh the state of the combo
                this.mon(this.getToolbar(), 'update', this.onUpdateToolbar, this);
                        // Monitor framework becoming ready
-               if (Ext.isIE) {
-                       this.mon(this.getToolbar().ownerCt, 'frameworkready', this.onFrameworkReady, this);
-               }
+               this.mon(this.getToolbar().ownerCt, 'frameworkready', this.onFrameworkReady, this);
        },
        /*
         * Get a reference to the editor
@@ -720,14 +718,20 @@ Ext.ux.form.HTMLAreaCombo = Ext.extend(Ext.form.ComboBox, {
                }
        },
        /*
-        * Special handling for combo stealing focus in IE
         * The iframe must have been rendered
         */
        onFrameworkReady: function () {
-                       // Take a bookmark in case the editor looses focus by activation of this combo
-               this.mon(this.getEditor().iframe.getEl(), 'mouseleave', this.saveSelection, this);
-                       // Restore the selection if combo was triggered
-               this.mon(this.getEditor().iframe.getEl(), 'focus', this.restoreSelection, this);
+               var iframe = this.getEditor().iframe;
+                       // Close the combo on a click in the iframe
+                       // Note: ExtJS is monitoring events only on the parent window
+               this.mon(Ext.get(iframe.document.documentElement), 'click', this.collapse, this);
+                       // Special handling for combo stealing focus in IE
+               if (Ext.isIE) {
+                               // Take a bookmark in case the editor looses focus by activation of this combo
+                       this.mon(iframe.getEl(), 'mouseleave', this.saveSelection, this);
+                               // Restore the selection if combo was triggered
+                       this.mon(iframe.getEl(), 'focus', this.restoreSelection, this);
+               }
        }
 });
 Ext.reg('htmlareacombo', Ext.ux.form.HTMLAreaCombo);
@@ -1176,7 +1180,7 @@ HTMLArea.Iframe = Ext.extend(Ext.BoxComponent, {
         * Start listening to things happening in the iframe
         */
        startListening: function () {
-               var documentElement = Ext.get(Ext.isIE ? this.document.body : this.document.documentElement);
+               var documentElement = Ext.get(this.document.documentElement);
                        // Create keyMap so that plugins may bind key handlers
                this.keyMap = new Ext.KeyMap(documentElement, [], (Ext.isIE || Ext.isWebKit) ? 'keydown' : 'keypress');
                        // Special keys map