mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-01-03 17:45:33 +00:00
Avoid textinput events when pasting from clipboard on iOS.
I handle command+C and command+V shortcuts for copy/paste from clipboard using SDL_GetClipboardText/SDL_SetClipboardText. But on iOS command+V shortcut is also handled by system, so that I also get textinput event with that clipboard text. And thus the application gets this clipboard text twice (from SDL_GetClipboardText and from textinput event). I assume that intended behavior is that command+V shouldn't generate textinput events. At least as far as I know ctrl+V on other platforms does nothing. This commit disables paste action for UITextField, so that textinput event isn't generated anymore. (cherry picked from commit eddaf870f5b57bbdb7f1cf08bacc4f997806d9a7)
This commit is contained in:
parent
42d979a231
commit
c67ff82377
|
@ -33,6 +33,10 @@
|
||||||
#define SDLRootViewController UIViewController
|
#define SDLRootViewController UIViewController
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@interface SDLUITextField : UITextField
|
||||||
|
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender;
|
||||||
|
@end
|
||||||
|
|
||||||
#ifdef SDL_IPHONE_KEYBOARD
|
#ifdef SDL_IPHONE_KEYBOARD
|
||||||
@interface SDL_uikitviewcontroller : SDLRootViewController <UITextFieldDelegate>
|
@interface SDL_uikitviewcontroller : SDLRootViewController <UITextFieldDelegate>
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -64,6 +64,17 @@ SDL_HideHomeIndicatorHintChanged(void *userdata, const char *name, const char *o
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@implementation SDLUITextField : UITextField
|
||||||
|
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
|
||||||
|
{
|
||||||
|
if (action == @selector(paste:)) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [super canPerformAction:action withSender:sender];
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
|
||||||
@implementation SDL_uikitviewcontroller {
|
@implementation SDL_uikitviewcontroller {
|
||||||
CADisplayLink *displayLink;
|
CADisplayLink *displayLink;
|
||||||
int animationInterval;
|
int animationInterval;
|
||||||
|
@ -71,7 +82,7 @@ SDL_HideHomeIndicatorHintChanged(void *userdata, const char *name, const char *o
|
||||||
void *animationCallbackParam;
|
void *animationCallbackParam;
|
||||||
|
|
||||||
#ifdef SDL_IPHONE_KEYBOARD
|
#ifdef SDL_IPHONE_KEYBOARD
|
||||||
UITextField *textField;
|
SDLUITextField *textField;
|
||||||
BOOL hardwareKeyboard;
|
BOOL hardwareKeyboard;
|
||||||
BOOL showingKeyboard;
|
BOOL showingKeyboard;
|
||||||
BOOL hidingKeyboard;
|
BOOL hidingKeyboard;
|
||||||
|
@ -259,7 +270,7 @@ SDL_HideHomeIndicatorHintChanged(void *userdata, const char *name, const char *o
|
||||||
- (void)initKeyboard
|
- (void)initKeyboard
|
||||||
{
|
{
|
||||||
obligateForBackspace = @" "; /* 64 space */
|
obligateForBackspace = @" "; /* 64 space */
|
||||||
textField = [[UITextField alloc] initWithFrame:CGRectZero];
|
textField = [[SDLUITextField alloc] initWithFrame:CGRectZero];
|
||||||
textField.delegate = self;
|
textField.delegate = self;
|
||||||
/* placeholder so there is something to delete! */
|
/* placeholder so there is something to delete! */
|
||||||
textField.text = obligateForBackspace;
|
textField.text = obligateForBackspace;
|
||||||
|
|
Loading…
Reference in a new issue