| 
				
			 | 
			
			
				@@ -67,13 +67,23 @@ class InputConnectionController implements TextInputClient { 
			 | 
		
	
		
			
			| 
				67
			 | 
			
				67
			 | 
			
			
				   void updateRemoteValue(TextEditingValue value) { 
			 | 
		
	
		
			
			| 
				68
			 | 
			
				68
			 | 
			
			
				     if (!hasConnection) return; 
			 | 
		
	
		
			
			| 
				69
			 | 
			
				69
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				70
			 | 
			
				
			 | 
			
			
				-    if (value == _lastKnownRemoteTextEditingValue) return; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				70
			 | 
			
			
				+    // Since we don't keep track of composing range in value provided by 
			 | 
		
	
		
			
			| 
				
			 | 
			
				71
			 | 
			
			
				+    // ZefyrController we need to add it here manually before comparing 
			 | 
		
	
		
			
			| 
				
			 | 
			
				72
			 | 
			
			
				+    // with the last known remote value. 
			 | 
		
	
		
			
			| 
				
			 | 
			
				73
			 | 
			
			
				+    // It is important to prevent excessive remote updates as it can cause 
			 | 
		
	
		
			
			| 
				
			 | 
			
				74
			 | 
			
			
				+    // race conditions. 
			 | 
		
	
		
			
			| 
				
			 | 
			
				75
			 | 
			
			
				+    final actualValue = value.copyWith( 
			 | 
		
	
		
			
			| 
				
			 | 
			
				76
			 | 
			
			
				+      composing: _lastKnownRemoteTextEditingValue.composing, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				77
			 | 
			
			
				+    ); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				78
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				79
			 | 
			
			
				+    if (actualValue == _lastKnownRemoteTextEditingValue) return; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				80
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				71
			 | 
			
				81
			 | 
			
			
				     bool shouldRemember = value.text != _lastKnownRemoteTextEditingValue.text; 
			 | 
		
	
		
			
			| 
				72
			 | 
			
				
			 | 
			
			
				-    _lastKnownRemoteTextEditingValue = value; 
			 | 
		
	
		
			
			| 
				73
			 | 
			
				
			 | 
			
			
				-    _textInputConnection.setEditingState(value); 
			 | 
		
	
		
			
			| 
				74
			 | 
			
				
			 | 
			
			
				-    // Only keep track if text changed (selection changes are not relevant) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				82
			 | 
			
			
				+    _lastKnownRemoteTextEditingValue = actualValue; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				83
			 | 
			
			
				+    _textInputConnection.setEditingState(actualValue); 
			 | 
		
	
		
			
			| 
				75
			 | 
			
				84
			 | 
			
			
				     if (shouldRemember) { 
			 | 
		
	
		
			
			| 
				76
			 | 
			
				
			 | 
			
			
				-      _sentRemoteValues.add(value); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				85
			 | 
			
			
				+      // Only keep track if text changed (selection changes are not relevant) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				86
			 | 
			
			
				+      _sentRemoteValues.add(actualValue); 
			 | 
		
	
		
			
			| 
				77
			 | 
			
				87
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				78
			 | 
			
				88
			 | 
			
			
				   } 
			 | 
		
	
		
			
			| 
				79
			 | 
			
				89
			 | 
			
			
				  
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -103,6 +113,12 @@ class InputConnectionController implements TextInputClient { 
			 | 
		
	
		
			
			| 
				103
			 | 
			
				113
			 | 
			
			
				       _sentRemoteValues.remove(value); 
			 | 
		
	
		
			
			| 
				104
			 | 
			
				114
			 | 
			
			
				       return; 
			 | 
		
	
		
			
			| 
				105
			 | 
			
				115
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				116
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				117
			 | 
			
			
				+    if (_lastKnownRemoteTextEditingValue == value) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				118
			 | 
			
			
				+      // There is no difference between this value and the last known value. 
			 | 
		
	
		
			
			| 
				
			 | 
			
				119
			 | 
			
			
				+      return; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				120
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				121
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				106
			 | 
			
				122
			 | 
			
			
				     // Note Flutter (unintentionally?) silences errors occurred during 
			 | 
		
	
		
			
			| 
				107
			 | 
			
				123
			 | 
			
			
				     // text input update, so we have to report it ourselves. 
			 | 
		
	
		
			
			| 
				108
			 | 
			
				124
			 | 
			
			
				     // For more details see https://github.com/flutter/flutter/issues/19191 
			 |