From 365f61b393ec0229334feeefe3c747e2ae189122 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 2 Dec 2022 22:54:08 -0600 Subject: [PATCH] Fix undo menu appearing when opening the keyboard on iOS 16 --- Limelight/Input/KeyboardInputField.h | 18 ++++++++++++++++++ Limelight/Input/KeyboardInputField.m | 18 ++++++++++++++++++ Limelight/Input/StreamView.m | 5 +++-- Moonlight.xcodeproj/project.pbxproj | 8 ++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 Limelight/Input/KeyboardInputField.h create mode 100644 Limelight/Input/KeyboardInputField.m diff --git a/Limelight/Input/KeyboardInputField.h b/Limelight/Input/KeyboardInputField.h new file mode 100644 index 0000000..eff86eb --- /dev/null +++ b/Limelight/Input/KeyboardInputField.h @@ -0,0 +1,18 @@ +// +// KeyboardInputField.h +// Moonlight +// +// Created by Cameron Gutman on 12/2/22. +// Copyright © 2022 Moonlight Game Streaming Project. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KeyboardInputField : UITextField + + +@end + +NS_ASSUME_NONNULL_END diff --git a/Limelight/Input/KeyboardInputField.m b/Limelight/Input/KeyboardInputField.m new file mode 100644 index 0000000..2fb0e73 --- /dev/null +++ b/Limelight/Input/KeyboardInputField.m @@ -0,0 +1,18 @@ +// +// KeyboardInputField.m +// Moonlight +// +// Created by Cameron Gutman on 12/2/22. +// Copyright © 2022 Moonlight Game Streaming Project. All rights reserved. +// + +#import "KeyboardInputField.h" + +@implementation KeyboardInputField + +- (UIEditingInteractionConfiguration) editingInteractionConfiguration { + // Suppress the Undo menu that appears with a 3 finger tap + return UIEditingInteractionConfigurationNone; +} + +@end diff --git a/Limelight/Input/StreamView.m b/Limelight/Input/StreamView.m index 0ee9779..2f5a0d8 100644 --- a/Limelight/Input/StreamView.m +++ b/Limelight/Input/StreamView.m @@ -13,13 +13,14 @@ #import "KeyboardSupport.h" #import "RelativeTouchHandler.h" #import "AbsoluteTouchHandler.h" +#import "KeyboardInputField.h" static const double X1_MOUSE_SPEED_DIVISOR = 2.5; @implementation StreamView { OnScreenControls* onScreenControls; - UITextField* keyInputField; + KeyboardInputField* keyInputField; BOOL isInputingText; float streamAspectRatio; @@ -52,7 +53,7 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5; TemporarySettings* settings = [[[DataManager alloc] init] getSettings]; - keyInputField = [[UITextField alloc] initWithFrame:CGRectZero]; + keyInputField = [[KeyboardInputField alloc] initWithFrame:CGRectZero]; [keyInputField setKeyboardType:UIKeyboardTypeDefault]; [keyInputField setAutocorrectionType:UITextAutocorrectionTypeNo]; [keyInputField setAutocapitalizationType:UITextAutocapitalizationTypeNone]; diff --git a/Moonlight.xcodeproj/project.pbxproj b/Moonlight.xcodeproj/project.pbxproj index 993c144..614490b 100644 --- a/Moonlight.xcodeproj/project.pbxproj +++ b/Moonlight.xcodeproj/project.pbxproj @@ -24,6 +24,8 @@ 9865DC38213287FE0005B9B9 /* LoadingFrameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FB4A23B71A9D3637004D2EF2 /* LoadingFrameViewController.m */; }; 9865DC3C2132922E0005B9B9 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9865DC3B2132922E0005B9B9 /* GameController.framework */; }; 9865DC3E21332D660005B9B9 /* MainFrameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FB89462519F646E200339C8A /* MainFrameViewController.m */; }; + 988FCD41293B091B003050E2 /* KeyboardInputField.m in Sources */ = {isa = PBXBuildFile; fileRef = 988FCD40293B091B003050E2 /* KeyboardInputField.m */; }; + 988FCD42293B091B003050E2 /* KeyboardInputField.m in Sources */ = {isa = PBXBuildFile; fileRef = 988FCD40293B091B003050E2 /* KeyboardInputField.m */; }; 9890CF6B203B7EE1006C4B06 /* libxml2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9890CF6A203B7EE1006C4B06 /* libxml2.tbd */; }; 9896219723D15C7000211983 /* X1Kit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9896219623D15C7000211983 /* X1Kit.swift */; }; 9896219A23D56E8100211983 /* X1Kit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9896219623D15C7000211983 /* X1Kit.swift */; }; @@ -187,6 +189,8 @@ 986CCE6C2133E45300168291 /* Moonlight v1.2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.2.xcdatamodel"; sourceTree = ""; }; 986E28A528EA989100758361 /* Moonlight v1.9.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.9.xcdatamodel"; sourceTree = ""; }; 98783FEA242EAC5D00F00EF4 /* Moonlight v1.5.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.5.xcdatamodel"; sourceTree = ""; }; + 988FCD3F293B091B003050E2 /* KeyboardInputField.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyboardInputField.h; sourceTree = ""; }; + 988FCD40293B091B003050E2 /* KeyboardInputField.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KeyboardInputField.m; sourceTree = ""; }; 9890CF6A203B7EE1006C4B06 /* libxml2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libxml2.tbd; path = usr/lib/libxml2.tbd; sourceTree = SDKROOT; }; 9896219623D15C7000211983 /* X1Kit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = X1Kit.swift; path = X1Kit/Sources/X1Kit/X1Kit.swift; sourceTree = ""; }; 9897B6A0221260EF00966419 /* Controller.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Controller.m; sourceTree = ""; }; @@ -569,6 +573,8 @@ 9819CC13254F107A008A7C8E /* RelativeTouchHandler.m */, 9819CC20254F180F008A7C8E /* AbsoluteTouchHandler.h */, 9819CC21254F180F008A7C8E /* AbsoluteTouchHandler.m */, + 988FCD3F293B091B003050E2 /* KeyboardInputField.h */, + 988FCD40293B091B003050E2 /* KeyboardInputField.m */, ); path = Input; sourceTree = ""; @@ -1022,6 +1028,7 @@ 9819CC1D254F1730008A7C8E /* RelativeTouchHandler.m in Sources */, FB1A67AB213245C500507771 /* CryptoManager.m in Sources */, FB1A67AF213245C500507771 /* IdManager.m in Sources */, + 988FCD42293B091B003050E2 /* KeyboardInputField.m in Sources */, FB1A67A3213245BD00507771 /* Connection.m in Sources */, FB1A67A5213245BD00507771 /* StreamConfiguration.m in Sources */, FB1A67A7213245BD00507771 /* StreamManager.m in Sources */, @@ -1082,6 +1089,7 @@ FB4A23B81A9D3637004D2EF2 /* LoadingFrameViewController.m in Sources */, FB9AFD3A1A7E05CE00872C98 /* ServerInfoResponse.m in Sources */, FB89463119F646E200339C8A /* StreamManager.m in Sources */, + 988FCD41293B091B003050E2 /* KeyboardInputField.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };