mirror of https://github.com/vector-im/riot-web
				
				
				
			Merge pull request #4173 from matrix-org/jryans/chrome-compose-flicker
Fix composer touch bar flickering on keypress in Chromepull/21833/head
						commit
						5da13ea253
					
				|  | @ -38,12 +38,27 @@ function setDocumentRangeSelection(editor, model, range) { | |||
| } | ||||
| 
 | ||||
| export function setCaretPosition(editor, model, caretPosition) { | ||||
|     const sel = document.getSelection(); | ||||
|     sel.removeAllRanges(); | ||||
|     const range = document.createRange(); | ||||
|     const {node, offset} = getNodeAndOffsetForPosition(editor, model, caretPosition); | ||||
|     range.setStart(node, offset); | ||||
|     range.collapse(true); | ||||
| 
 | ||||
|     const sel = document.getSelection(); | ||||
|     if (sel.rangeCount === 1) { | ||||
|         const existingRange = sel.getRangeAt(0); | ||||
|         if ( | ||||
|             existingRange.startContainer === range.startContainer && | ||||
|             existingRange.startOffset === range.startOffset && | ||||
|             existingRange.collapsed === range.collapsed | ||||
|         ) { | ||||
|             // If the selection matches, it's important to leave it alone.
 | ||||
|             // Recreating the selection state in at least Chrome can cause
 | ||||
|             // strange side effects, like touch bar flickering on every key.
 | ||||
|             // See https://github.com/vector-im/riot-web/issues/9299
 | ||||
|             return; | ||||
|         } | ||||
|     } | ||||
|     sel.removeAllRanges(); | ||||
|     sel.addRange(range); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 J. Ryan Stinnett
						J. Ryan Stinnett