Revert "Remove deprecated TextInputClient scribble method code" (#39516)
Fixes the scribble feature (iPad handwriting input via Apple Pencil).
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm
index c4c434e..5113c96 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm
@@ -986,15 +986,21 @@
#pragma mark - FlutterViewEngineDelegate
- (void)flutterTextInputView:(FlutterTextInputView*)textInputView showToolbar:(int)client {
- [_scribbleChannel.get() invokeMethod:@"Scribble.showToolbar" arguments:@[ @(client) ]];
+ // TODO(justinmc): Switch from the TextInputClient to Scribble channel when
+ // the framework has finished transitioning to the Scribble channel.
+ // https://github.com/flutter/flutter/pull/115296
+ [_textInputChannel.get() invokeMethod:@"TextInputClient.showToolbar" arguments:@[ @(client) ]];
}
- (void)flutterTextInputPlugin:(FlutterTextInputPlugin*)textInputPlugin
focusElement:(UIScribbleElementIdentifier)elementIdentifier
atPoint:(CGPoint)referencePoint
result:(FlutterResult)callback {
- [_scribbleChannel.get()
- invokeMethod:@"Scribble.focusElement"
+ // TODO(justinmc): Switch from the TextInputClient to Scribble channel when
+ // the framework has finished transitioning to the Scribble channel.
+ // https://github.com/flutter/flutter/pull/115296
+ [_textInputChannel.get()
+ invokeMethod:@"TextInputClient.focusElement"
arguments:@[ elementIdentifier, @(referencePoint.x), @(referencePoint.y) ]
result:callback];
}
@@ -1002,30 +1008,47 @@
- (void)flutterTextInputPlugin:(FlutterTextInputPlugin*)textInputPlugin
requestElementsInRect:(CGRect)rect
result:(FlutterResult)callback {
- [_scribbleChannel.get()
- invokeMethod:@"Scribble.requestElementsInRect"
+ // TODO(justinmc): Switch from the TextInputClient to Scribble channel when
+ // the framework has finished transitioning to the Scribble channel.
+ // https://github.com/flutter/flutter/pull/115296
+ [_textInputChannel.get()
+ invokeMethod:@"TextInputClient.requestElementsInRect"
arguments:@[ @(rect.origin.x), @(rect.origin.y), @(rect.size.width), @(rect.size.height) ]
result:callback];
}
- (void)flutterTextInputViewScribbleInteractionBegan:(FlutterTextInputView*)textInputView {
- [_scribbleChannel.get() invokeMethod:@"Scribble.scribbleInteractionBegan" arguments:nil];
+ // TODO(justinmc): Switch from the TextInputClient to Scribble channel when
+ // the framework has finished transitioning to the Scribble channel.
+ // https://github.com/flutter/flutter/pull/115296
+ [_textInputChannel.get() invokeMethod:@"TextInputClient.scribbleInteractionBegan" arguments:nil];
}
- (void)flutterTextInputViewScribbleInteractionFinished:(FlutterTextInputView*)textInputView {
- [_scribbleChannel.get() invokeMethod:@"Scribble.scribbleInteractionFinished" arguments:nil];
+ // TODO(justinmc): Switch from the TextInputClient to Scribble channel when
+ // the framework has finished transitioning to the Scribble channel.
+ // https://github.com/flutter/flutter/pull/115296
+ [_textInputChannel.get() invokeMethod:@"TextInputClient.scribbleInteractionFinished"
+ arguments:nil];
}
- (void)flutterTextInputView:(FlutterTextInputView*)textInputView
insertTextPlaceholderWithSize:(CGSize)size
withClient:(int)client {
- [_scribbleChannel.get() invokeMethod:@"Scribble.insertTextPlaceholder"
- arguments:@[ @(client), @(size.width), @(size.height) ]];
+ // TODO(justinmc): Switch from the TextInputClient to Scribble channel when
+ // the framework has finished transitioning to the Scribble channel.
+ // https://github.com/flutter/flutter/pull/115296
+ [_textInputChannel.get() invokeMethod:@"TextInputClient.insertTextPlaceholder"
+ arguments:@[ @(client), @(size.width), @(size.height) ]];
}
- (void)flutterTextInputView:(FlutterTextInputView*)textInputView
removeTextPlaceholder:(int)client {
- [_scribbleChannel.get() invokeMethod:@"Scribble.removeTextPlaceholder" arguments:@[ @(client) ]];
+ // TODO(justinmc): Switch from the TextInputClient to Scribble channel when
+ // the framework has finished transitioning to the Scribble channel.
+ // https://github.com/flutter/flutter/pull/115296
+ [_textInputChannel.get() invokeMethod:@"TextInputClient.removeTextPlaceholder"
+ arguments:@[ @(client) ]];
}
- (void)flutterTextInputViewDidResignFirstResponder:(FlutterTextInputView*)textInputView {
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm
index 7a342c6..68b57ae 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm
@@ -50,6 +50,10 @@
@"TextInput.setEditableSizeAndTransform";
static NSString* const kSetMarkedTextRectMethod = @"TextInput.setMarkedTextRect";
static NSString* const kFinishAutofillContextMethod = @"TextInput.finishAutofillContext";
+// TODO(justinmc): Remove the TextInput method constant when the framework has
+// finished transitioning to using the Scribble channel.
+// https://github.com/flutter/flutter/pull/104128
+static NSString* const kDeprecatedSetSelectionRectsMethod = @"TextInput.setSelectionRects";
static NSString* const kSetSelectionRectsMethod = @"Scribble.setSelectionRects";
static NSString* const kStartLiveTextInputMethod = @"TextInput.startLiveTextInput";
@@ -2107,6 +2111,12 @@
} else if ([method isEqualToString:kFinishAutofillContextMethod]) {
[self triggerAutofillSave:[args boolValue]];
result(nil);
+ // TODO(justinmc): Remove the TextInput method constant when the framework has
+ // finished transitioning to using the Scribble channel.
+ // https://github.com/flutter/flutter/pull/104128
+ } else if ([method isEqualToString:kDeprecatedSetSelectionRectsMethod]) {
+ [self setSelectionRects:args];
+ result(nil);
} else if ([method isEqualToString:kSetSelectionRectsMethod]) {
[self setSelectionRects:args];
result(nil);