Merge pull request #159 from tophf/track-active-codebox
Editor: sticky .CodeMirror-active class for code boxes
This commit is contained in:
		
						commit
						fceda3f27d
					
				
							
								
								
									
										25
									
								
								edit.js
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								edit.js
									
									
									
									
									
								
							|  | @ -310,8 +310,16 @@ function setupCodeMirror(textarea, index) { | |||
| 	cm.on("blur", function(cm) { | ||||
| 		editors.lastActive = cm; | ||||
| 		hotkeyRerouter.setState(true); | ||||
| 		setTimeout(function() { | ||||
| 			var cm = editors.lastActive; | ||||
| 			var childFocused = cm.display.wrapper.contains(document.activeElement); | ||||
| 			cm.display.wrapper.classList.toggle("CodeMirror-active", childFocused); | ||||
| 		}, 0); | ||||
| 	}); | ||||
| 	cm.on("focus", function() { | ||||
| 		hotkeyRerouter.setState(false); | ||||
| 		cm.display.wrapper.classList.add("CodeMirror-active"); | ||||
| 	}); | ||||
| 	cm.on("focus", hotkeyRerouter.setState.bind(null, false)); | ||||
| 
 | ||||
| 	var resizeGrip = cm.display.wrapper.appendChild(document.createElement("div")); | ||||
| 	resizeGrip.className = "resize-grip"; | ||||
|  | @ -600,6 +608,7 @@ function setupGlobalSearch() { | |||
| 			originalOpenDialog.call(cm, template.innerHTML, callback.bind(cb), opt); | ||||
| 		}; | ||||
| 		setTimeout(function() { cm.openDialog = originalOpenDialog; }, 0); | ||||
| 		refocusMinidialog(cm); | ||||
| 	} | ||||
| 
 | ||||
| 	function focusClosestCM(activeCM) { | ||||
|  | @ -786,6 +795,7 @@ function setupGlobalSearch() { | |||
| 
 | ||||
| function jumpToLine(cm) { | ||||
| 	var cur = cm.getCursor(); | ||||
| 	refocusMinidialog(cm); | ||||
| 	cm.openDialog(template.jumpToLine.innerHTML, function(str) { | ||||
| 		var m = str.match(/^\s*(\d+)(?:\s*:\s*(\d+))?\s*$/); | ||||
| 		if (m) { | ||||
|  | @ -794,6 +804,19 @@ function jumpToLine(cm) { | |||
| 	}, {value: cur.line+1}); | ||||
| } | ||||
| 
 | ||||
| function refocusMinidialog(cm) { | ||||
| 	var section = getSectionForCodeMirror(cm); | ||||
| 	if (!section.querySelector(".CodeMirror-dialog")) { | ||||
| 		return; | ||||
| 	} | ||||
| 	// close the currently opened minidialog
 | ||||
| 	cm.focus(); | ||||
| 	// make sure to focus the input in newly opened minidialog
 | ||||
| 	setTimeout(function() { | ||||
| 		section.querySelector(".CodeMirror-dialog").focus(); | ||||
| 	}, 0); | ||||
| } | ||||
| 
 | ||||
| function nextPrevEditor(cm, direction) { | ||||
| 	cm = editors[(editors.indexOf(cm) + direction + editors.length) % editors.length]; | ||||
| 	makeSectionVisible(cm); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user