mirror of
https://github.com/moonlight-stream/moonlight-ios.git
synced 2025-07-02 07:46:16 +00:00
Enable right-click context menus on iPadOS
This commit is contained in:
parent
dc9b5b7c96
commit
78f2b8ac47
@ -16,7 +16,11 @@
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
#if !TARGET_OS_TV
|
||||||
|
@interface UIAppView : UIButton <UIContextMenuInteractionDelegate>
|
||||||
|
#else
|
||||||
@interface UIAppView : UIButton
|
@interface UIAppView : UIButton
|
||||||
|
#endif
|
||||||
|
|
||||||
- (id) initWithApp:(TemporaryApp*)app cache:(NSCache*)cache andCallback:(id<AppCallback>)callback;
|
- (id) initWithApp:(TemporaryApp*)app cache:(NSCache*)cache andCallback:(id<AppCallback>)callback;
|
||||||
- (void) updateAppImage;
|
- (void) updateAppImage;
|
||||||
|
@ -46,6 +46,13 @@ static UIImage* noImage;
|
|||||||
[_appImage setImage:noImage];
|
[_appImage setImage:noImage];
|
||||||
[self addSubview:_appImage];
|
[self addSubview:_appImage];
|
||||||
|
|
||||||
|
#if !TARGET_OS_TV
|
||||||
|
if (@available(iOS 13.0, *)) {
|
||||||
|
UIContextMenuInteraction* rightClickInteraction = [[UIContextMenuInteraction alloc] initWithDelegate:self];
|
||||||
|
[self addInteraction:rightClickInteraction];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
UILongPressGestureRecognizer* longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(appLongClicked:)];
|
UILongPressGestureRecognizer* longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(appLongClicked:)];
|
||||||
[self addGestureRecognizer:longPressRecognizer];
|
[self addGestureRecognizer:longPressRecognizer];
|
||||||
|
|
||||||
@ -79,11 +86,26 @@ static UIImage* noImage;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void) appLongClicked:(UILongPressGestureRecognizer*)gesture {
|
- (void) appLongClicked:(UILongPressGestureRecognizer*)gesture {
|
||||||
|
#if !TARGET_OS_TV
|
||||||
|
if (@available(iOS 13.0, *)) {
|
||||||
|
// contextMenuInteraction will handle this
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (gesture.state == UIGestureRecognizerStateBegan) {
|
if (gesture.state == UIGestureRecognizerStateBegan) {
|
||||||
[_callback appLongClicked:_app view:self];
|
[_callback appLongClicked:_app view:self];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !TARGET_OS_TV
|
||||||
|
- (UIContextMenuConfiguration *)contextMenuInteraction:(UIContextMenuInteraction *)interaction
|
||||||
|
configurationForMenuAtLocation:(CGPoint)location {
|
||||||
|
[_callback appLongClicked:_app view:self];
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
- (void) updateAppImage {
|
- (void) updateAppImage {
|
||||||
if (_appOverlay != nil) {
|
if (_appOverlay != nil) {
|
||||||
[_appOverlay removeFromSuperview];
|
[_appOverlay removeFromSuperview];
|
||||||
|
@ -17,7 +17,11 @@
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
#if !TARGET_OS_TV
|
||||||
|
@interface UIComputerView : UIButton <UIContextMenuInteractionDelegate>
|
||||||
|
#else
|
||||||
@interface UIComputerView : UIButton
|
@interface UIComputerView : UIButton
|
||||||
|
#endif
|
||||||
|
|
||||||
- (id) initWithComputer:(TemporaryHost*)host andCallback:(id<HostCallback>)callback;
|
- (id) initWithComputer:(TemporaryHost*)host andCallback:(id<HostCallback>)callback;
|
||||||
- (id) initForAddWithCallback:(id<HostCallback>)callback;
|
- (id) initForAddWithCallback:(id<HostCallback>)callback;
|
||||||
|
@ -122,6 +122,13 @@ static const int LABEL_DY = 20;
|
|||||||
UILongPressGestureRecognizer* longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(hostLongClicked:)];
|
UILongPressGestureRecognizer* longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(hostLongClicked:)];
|
||||||
[self addGestureRecognizer:longPressRecognizer];
|
[self addGestureRecognizer:longPressRecognizer];
|
||||||
|
|
||||||
|
#if !TARGET_OS_TV
|
||||||
|
if (@available(iOS 13.0, *)) {
|
||||||
|
UIContextMenuInteraction* rightClickInteraction = [[UIContextMenuInteraction alloc] initWithDelegate:self];
|
||||||
|
[self addInteraction:rightClickInteraction];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
[self addTarget:self action:@selector(hostClicked) forControlEvents:UIControlEventPrimaryActionTriggered];
|
[self addTarget:self action:@selector(hostClicked) forControlEvents:UIControlEventPrimaryActionTriggered];
|
||||||
|
|
||||||
[self updateContentsForHost:host];
|
[self updateContentsForHost:host];
|
||||||
@ -194,11 +201,26 @@ static const int LABEL_DY = 20;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void) hostLongClicked:(UILongPressGestureRecognizer*)gesture {
|
- (void) hostLongClicked:(UILongPressGestureRecognizer*)gesture {
|
||||||
|
#if !TARGET_OS_TV
|
||||||
|
if (@available(iOS 13.0, *)) {
|
||||||
|
// contextMenuInteraction will handle this
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (gesture.state == UIGestureRecognizerStateBegan) {
|
if (gesture.state == UIGestureRecognizerStateBegan) {
|
||||||
[_callback hostLongClicked:_host view:self];
|
[_callback hostLongClicked:_host view:self];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !TARGET_OS_TV
|
||||||
|
- (UIContextMenuConfiguration *)contextMenuInteraction:(UIContextMenuInteraction *)interaction
|
||||||
|
configurationForMenuAtLocation:(CGPoint)location {
|
||||||
|
[_callback hostLongClicked:_host view:self];
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
- (void) hostClicked {
|
- (void) hostClicked {
|
||||||
[_callback hostClicked:_host view:self];
|
[_callback hostClicked:_host view:self];
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user