diff --git a/VoidLink/ViewControllers/MainFrameViewController.h b/VoidLink/ViewControllers/MainFrameViewController.h index 8e8038f0..cf92f0ce 100644 --- a/VoidLink/ViewControllers/MainFrameViewController.h +++ b/VoidLink/ViewControllers/MainFrameViewController.h @@ -25,6 +25,7 @@ @property (nonatomic, strong) IBOutlet UIBarButtonItem *settingsButton; #if !TARGET_OS_TV @property (nonatomic, assign) bool settingsExpandedInStreamView; +@property (nonatomic, assign) bool sessionLaunchedWithAbsoluteTouch; @property (nonatomic, strong) HostCollectionViewController *hostCollectionVC; @property (weak, nonatomic) IBOutlet UINavigationItem *navigationItem; diff --git a/VoidLink/ViewControllers/MainFrameViewController.m b/VoidLink/ViewControllers/MainFrameViewController.m index e442bcd6..57c4ad0b 100644 --- a/VoidLink/ViewControllers/MainFrameViewController.m +++ b/VoidLink/ViewControllers/MainFrameViewController.m @@ -1181,6 +1181,7 @@ static NSMutableSet* hostList; // [settingsViewController widget:settingsViewController.bitrateSlider setEnabled:!self.settingsExpandedInStreamView]; [settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.optimizeGamesStack]; [settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.audioOnPcStack]; + [settingsViewController.touchModeSelector setEnabled:!_settingsExpandedInStreamView || !_sessionLaunchedWithAbsoluteTouch]; [settingsViewController.codecSelector setEnabled:!_settingsExpandedInStreamView]; [settingsViewController.yuv444Switch setEnabled:!_settingsExpandedInStreamView]; [settingsViewController.hdrSwitch setEnabled:!_settingsExpandedInStreamView && [settingsViewController hdrSupported]]; diff --git a/VoidLink/ViewControllers/StreamFrameViewController.m b/VoidLink/ViewControllers/StreamFrameViewController.m index 59e79257..80d59c99 100644 --- a/VoidLink/ViewControllers/StreamFrameViewController.m +++ b/VoidLink/ViewControllers/StreamFrameViewController.m @@ -308,7 +308,7 @@ - (void)configZoomGestureAndAddStreamView{ if (_settings.touchMode.intValue == AbsoluteTouch) { - _scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame]; + if(!_scrollView) _scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame]; #if !TARGET_OS_TV [_scrollView.panGestureRecognizer setMinimumNumberOfTouches:2]; [_scrollView.panGestureRecognizer setMaximumNumberOfTouches:2]; // reduce competing with keyboardToggleRecognizer in StreamView. @@ -317,15 +317,21 @@ [_scrollView setShowsVerticalScrollIndicator:NO]; [_scrollView setDelegate:self]; [_scrollView setMaximumZoomScale:10.0f]; - - // Add StreamView inside a UIScrollView for absolute mode - [_scrollView addSubview:_streamView]; - // Insert at index 0 to ensure it doesn't cover OSC controls (CALayers) - [self.view insertSubview:_scrollView atIndex:0]; + if(!_mainFrameViewcontroller.settingsExpandedInStreamView){ + // Add StreamView inside a UIScrollView for absolute mode + [_scrollView addSubview:_streamView]; + // Insert at index 0 to ensure it doesn't cover OSC controls (CALayers) + [self.view insertSubview:_scrollView atIndex:0]; + } } else{ // Add streamView directly to self.view in other touch modes // Insert at index 0 to ensure it doesn't cover OSC controls (CALayers) + if([_streamView.superview isKindOfClass:[UIScrollView class]]){ + [_streamView removeFromSuperview]; + NSLog(@"removeFromSuperview %f", CACurrentMediaTime()); + } + [self.view insertSubview:_streamView atIndex:0]; } } @@ -728,6 +734,8 @@ [self.view insertSubview:self.metalViewController.view atIndex:0]; [self.metalViewController didMoveToParentViewController:self]; } + + _mainFrameViewcontroller.sessionLaunchedWithAbsoluteTouch = _settings.touchMode.intValue == AbsoluteTouch; } - (void)keyboardWillShow:(NSNotification *)notification{