Changeset 425
- Timestamp:
- 2007-07-09 11:44:38 (17 months ago)
- Location:
- FCKeditor/trunk/editor/_source
- Files:
-
- 3 modified
-
classes/fckenterkey.js (modified) (4 diffs)
-
internals/fck_ie.js (modified) (1 diff)
-
internals/fck.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
FCKeditor/trunk/editor/_source/classes/fckenterkey.js
r406 r425 30 30 * May be "p", "div", "br". Defaults to "br". 31 31 */ 32 var FCKEnterKey = function( targetWindow, enterMode, shiftEnterMode )32 var FCKEnterKey = function( targetWindow, enterMode, shiftEnterMode, tabSpaces ) 33 33 { 34 34 this.Window = targetWindow ; 35 35 this.EnterMode = enterMode || 'p' ; 36 36 this.ShiftEnterMode = shiftEnterMode || 'br' ; 37 this.TabText = "\xa0\xa0" ; // the default text for each tab is two non-breaking spaces 38 39 if ( tabSpaces > 0 ) 40 { 41 var a = [] ; 42 for ( var i = 0 ; i < tabSpaces ; i++ ) 43 a.push( "\xa0" ) ; 44 this.TabText = a.join( "" ) ; 45 } 37 46 38 47 // Setup the Keystroke Handler. … … 45 54 [ SHIFT + 13, 'ShiftEnter' ], 46 55 [ 8 , 'Backspace' ], 47 [ 46 , 'Delete' ] 56 [ 46 , 'Delete' ], 57 [ 9, "Tab" ] 48 58 ] ) ; 49 59 … … 77 87 case 'Delete' : 78 88 return oEnterKey.DoDelete() ; 89 break ; 90 case "Tab" : 91 return oEnterKey.DoTab() ; 79 92 } 80 93 /* @Packager.RemoveLine … … 285 298 oRange.Release() ; 286 299 return bCustom ; 300 } 301 302 /* 303 * Executes the <Tab> key behavior. 304 */ 305 FCKEnterKey.prototype.DoTab = function() 306 { 307 var oRange = new FCKDomRange( this.Window ); 308 oRange.MoveToSelection() ; 309 oRange.DeleteContents() ; 310 oRange.InsertNode( this.Window.document.createTextNode( this.TabText ) ) ; 311 oRange.Collapse( false ) ; 312 oRange.Select() ; 313 return true ; 287 314 } 288 315 -
FCKeditor/trunk/editor/_source/internals/fck_ie.js
r414 r425 100 100 FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument.body ) ; 101 101 102 // Build the "TAB" key replacement (if necessary).103 if ( FCKConfig.TabSpaces > 0 )104 {105 window.FCKTabHTML = '' ;106 for ( i = 0 ; i < FCKConfig.TabSpaces ; i++ )107 window.FCKTabHTML += " " ;108 }109 102 this.EditorDocument.attachEvent("onkeydown", FCK._KeyDownListener ) ; 110 103 -
FCKeditor/trunk/editor/_source/internals/fck.js
r411 r425 716 716 // Create the enter key handler 717 717 if ( !FCKConfig.DisableEnterKeyHandler ) 718 FCK.EnterKeyHandler = new FCKEnterKey( FCK.EditorWindow, FCKConfig.EnterMode, FCKConfig.ShiftEnterMode ) ;718 FCK.EnterKeyHandler = new FCKEnterKey( FCK.EditorWindow, FCKConfig.EnterMode, FCKConfig.ShiftEnterMode, FCKConfig.TabSpaces ) ; 719 719 720 720 // Listen for keystroke events. … … 768 768 return false ; 769 769 } 770 else if ( keystrokeValue == 'CustomTab' ) 771 return false ; // ignore it here, it's handled in fckenterkey.js 770 772 } 771 773 else … … 774 776 if ( keystrokeValue.Equals( 'Paste', 'Undo', 'Redo', 'SelectAll' ) ) 775 777 return false ; 778 // Pressing <Tab> in source mode should produce a tab space in the text area, not 779 // changing the focus to something else. 780 if ( keystrokeValue == 'CustomTab' ) 781 { 782 if ( FCKBrowserInfo.IsIE ) 783 { 784 var range = document.selection.createRange() ; 785 if ( range.parentElement() != FCK.EditingArea.Textarea ) 786 return false ; 787 range.text = "\t" ; 788 range.select() ; 789 } 790 else 791 { 792 var a = [] ; 793 var el = FCK.EditingArea.Textarea ; 794 var selStart = el.selectionStart ; 795 var selEnd = el.selectionEnd ; 796 a.push( el.value.substr(0, selStart ) ) ; 797 a.push( "\t" ) ; 798 a.push( el.value.substr( selEnd ) ) ; 799 el.value = a.join( "" ) ; 800 el.setSelectionRange( selStart + 1, selStart + 1 ) ; 801 } 802 return true ; 803 } 776 804 } 777 805