fix: profile saving issue caused by launching osw tool via tap gesture
This commit is contained in:
@@ -417,7 +417,7 @@ import UIKit
|
||||
print("No match found for input: \(input)")
|
||||
return nil
|
||||
}
|
||||
print("Regex matched for input: \(input)")
|
||||
// print("Regex matched for input: \(input)")
|
||||
|
||||
let matchedString = (input as NSString).substring(with: match.range(at: 0))
|
||||
let keyStrings = matchedString.split(separator: "+").map { String($0) }
|
||||
@@ -475,7 +475,7 @@ import UIKit
|
||||
print("No match found for input: \(input)")
|
||||
return nil
|
||||
}
|
||||
print("Regex matched for input: \(input)")
|
||||
// print("Regex matched for input: \(input)")
|
||||
|
||||
let matchedString = (input as NSString).substring(with: match.range(at: 0))
|
||||
let cmdStrings = matchedString.split(separator: "-").map { String($0) }
|
||||
|
||||
@@ -343,7 +343,7 @@ static float L3_Y;
|
||||
if(position.x < 1.0 && position.y < 1.0) {
|
||||
position.x = position.x * _view.bounds.size.width;
|
||||
position.y = position.y * _view.bounds.size.height;
|
||||
NSLog(@"denormalizing position: %f, %f", position.x, position.y);
|
||||
// NSLog(@"denormalizing position: %f, %f", position.x, position.y);
|
||||
}
|
||||
return position;
|
||||
}
|
||||
@@ -1930,7 +1930,7 @@ static float L3_Y;
|
||||
if(alpha < 0.23) targetAlpha = 0.23;
|
||||
if(alpha == 0.0 || alpha == 1.0) targetAlpha = 5.0f/6.0f; // invalid alpha value
|
||||
|
||||
NSLog(@"alphas: %f",targetAlpha);
|
||||
// NSLog(@"alphas: %f",targetAlpha);
|
||||
|
||||
if (layer == self._aButton ||
|
||||
layer == self._bButton ||
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
andConfig:(StreamConfiguration*)streamConfig;
|
||||
- (void) reloadOnScreenControlsWith:(ControllerSupport*)controllerSupport
|
||||
andConfig:(StreamConfiguration*)streamConfig;
|
||||
- (void) clearOnScreenKeyboardButtons;
|
||||
- (void) clearOnScreenWidgets;
|
||||
- (void) reloadOnScreenWidgetViews;
|
||||
|
||||
- (CGSize) getVideoAreaSize;
|
||||
|
||||
@@ -399,7 +399,7 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5;
|
||||
}
|
||||
|
||||
|
||||
- (void) clearOnScreenKeyboardButtons{
|
||||
- (void) clearOnScreenWidgets{
|
||||
for (UIView *subview in self->streamFrameTopLayerView.subviews) {
|
||||
// 检查子视图是否是特定类型的实例
|
||||
if ([subview isKindOfClass:[OnScreenWidgetView class]]) {
|
||||
@@ -422,7 +422,7 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5;
|
||||
// NSLog(@"reload on screen keyboard buttons here");
|
||||
|
||||
// remove all keyboard widget views first
|
||||
[self clearOnScreenKeyboardButtons];
|
||||
[self clearOnScreenWidgets];
|
||||
|
||||
// bool customOscEnabled = [self isOscEnabled] && settings.onscreenControls.intValue == OnScreenControlsLevelCustom;
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (void)presentProfilesTableView;
|
||||
|
||||
@property LayoutOnScreenControls *layoutOSC; // object that contains a view which contains the on screen controller buttons that allows the user to drag and positions each button on the screen using touch
|
||||
@property (nonatomic) NSMutableSet* OnScreenWidgetViews;
|
||||
@property (nonatomic) NSMutableSet* onScreenWidgetViews;
|
||||
|
||||
@property int OSCSegmentSelected;
|
||||
@property (nonatomic, assign) bool quickSwitchEnabled;
|
||||
|
||||
+10
-10
@@ -62,7 +62,7 @@
|
||||
|
||||
- (void) viewWillDisappear:(BOOL)animated{
|
||||
OnScreenWidgetView.editMode = false;
|
||||
for (OnScreenWidgetView* widgetView in self.OnScreenWidgetViews){
|
||||
for (OnScreenWidgetView* widgetView in self.onScreenWidgetViews){
|
||||
[widgetView.stickBallLayer removeFromSuperlayer];
|
||||
[widgetView.crossMarkLayer removeFromSuperlayer];
|
||||
}
|
||||
@@ -89,7 +89,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
[self.OnScreenWidgetViews removeAllObjects];
|
||||
[self.onScreenWidgetViews removeAllObjects];
|
||||
|
||||
|
||||
NSLog(@"reload os Key here");
|
||||
@@ -120,7 +120,7 @@
|
||||
[widgetView resizeWidgetView]; // resize must be called after relocation
|
||||
[widgetView adjustTransparencyWithAlpha:buttonState.backgroundAlpha];
|
||||
[widgetView adjustBorderWithWidth:buttonState.borderWidth];
|
||||
[self.OnScreenWidgetViews addObject:widgetView];
|
||||
[self.onScreenWidgetViews addObject:widgetView];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -128,8 +128,8 @@
|
||||
- (void) viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
profilesManager = [OSCProfilesManager sharedManager:self.view.bounds];
|
||||
self.OnScreenWidgetViews = [[NSMutableSet alloc] init]; // will be revised to read persisted data , somewhere else
|
||||
[OSCProfilesManager setOnScreenWidgetViewsSet:self.OnScreenWidgetViews]; // pass the keyboard button dict to profiles manager
|
||||
self.onScreenWidgetViews = [[NSMutableSet alloc] init]; // will be revised to read persisted data , somewhere else
|
||||
[OSCProfilesManager setOnScreenWidgetViewsSet:self.onScreenWidgetViews]; // pass the keyboard button dict to profiles manager
|
||||
|
||||
//isToolbarHidden = NO; // keeps track if the toolbar is hidden up above the screen so that we know whether to hide or show it when the user taps the toolbar's hide/show button
|
||||
_quickSwitchEnabled = false;
|
||||
@@ -253,7 +253,7 @@
|
||||
#pragma mark - Class Helper Functions
|
||||
|
||||
- (void)handleReturnToForeground {
|
||||
[OSCProfilesManager setOnScreenWidgetViewsSet:self.OnScreenWidgetViews]; // pass the keyboard button dict to profiles manager
|
||||
[OSCProfilesManager setOnScreenWidgetViewsSet:self.onScreenWidgetViews]; // pass the keyboard button dict to profiles manager
|
||||
}
|
||||
|
||||
/* fades the 'Undo Button' in or out depending on whether the user has any OSC layout changes to undo */
|
||||
@@ -588,10 +588,10 @@
|
||||
[newWidget resizeWidgetView]; // resize must be called after relocation
|
||||
[newWidget adjustTransparencyWithAlpha:widget.backgroundAlpha];
|
||||
[newWidget adjustBorderWithWidth:widget.borderWidth];
|
||||
[self.OnScreenWidgetViews addObject:newWidget];
|
||||
[self.onScreenWidgetViews addObject:newWidget];
|
||||
self->selectedWidgetView = newWidget;
|
||||
if(!createNew){
|
||||
[self.OnScreenWidgetViews removeObject:widget];
|
||||
[self.onScreenWidgetViews removeObject:widget];
|
||||
[widget removeFromSuperview];
|
||||
}
|
||||
}
|
||||
@@ -604,7 +604,7 @@
|
||||
widgetView.guidelineDelegate = (id<OnScreenWidgetGuidelineUpdateDelegate>)self;
|
||||
widgetView.translatesAutoresizingMaskIntoConstraints = NO; // weird but this is mandatory, or you will find no key views added to the right place
|
||||
widgetView.minStickOffset = [widgetInitParams[@"minStickOffsetString"] floatValue];
|
||||
[self.OnScreenWidgetViews addObject:widgetView];
|
||||
[self.onScreenWidgetViews addObject:widgetView];
|
||||
// Add the widgetView to the view controller's view
|
||||
[self.view insertSubview:widgetView belowSubview:self.widgetPanelStack];
|
||||
[widgetView setLocationWithPosition:CGPointMake(90, 130)];
|
||||
@@ -1253,7 +1253,7 @@
|
||||
|
||||
if(!isToolbarHidden && self->selectedWidgetView != nil && [self layerIsOverlappingWithTrashcanButton:selectedWidgetView.layer]){
|
||||
[self->selectedWidgetView removeFromSuperview];
|
||||
[self.OnScreenWidgetViews removeObject:self->selectedWidgetView];
|
||||
[self.onScreenWidgetViews removeObject:self->selectedWidgetView];
|
||||
[self clearStickIndicator];
|
||||
[selectedWidgetView.buttonDownVisualEffectLayer removeFromSuperlayer];
|
||||
}
|
||||
|
||||
@@ -218,15 +218,8 @@
|
||||
}
|
||||
|
||||
- (void)configOscLayoutTool{
|
||||
|
||||
if([self isOscLayoutToolEnabled]){
|
||||
_oscLayoutTapRecoginizer = [[CustomTapGestureRecognizer alloc] initWithTarget:self action:@selector(openWidgetLayoutTool)];
|
||||
_oscLayoutTapRecoginizer.numberOfTouchesRequired = _settings.oscLayoutToolFingers.intValue; //tap a predefined number of fingers to open osc layout tool
|
||||
_oscLayoutTapRecoginizer.tapDownTimeThreshold = 0.2;
|
||||
_oscLayoutTapRecoginizer.delaysTouchesBegan = NO;
|
||||
_oscLayoutTapRecoginizer.delaysTouchesEnded = NO;
|
||||
if(_settings.touchMode.intValue == AbsoluteTouch) _oscLayoutTapRecoginizer.immediateTriggering = true; // make immediate triggering on for absolute touch mode
|
||||
|
||||
[self.view addGestureRecognizer:_oscLayoutTapRecoginizer]; //
|
||||
/* sets a reference to the correct 'LayoutOnScreenControlsViewController' depending on whether the user is on an iPhone or iPad */
|
||||
// _layoutOnScreenControlsVC = [[LayoutOnScreenControlsViewController alloc] init];
|
||||
BOOL isIPhone = ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone);
|
||||
@@ -242,20 +235,22 @@
|
||||
_layoutOnScreenControlsVC.view.backgroundColor = UIColor.clearColor;
|
||||
_layoutOnScreenControlsVC.modalPresentationStyle = UIModalPresentationOverCurrentContext;
|
||||
}
|
||||
//NSLog(@"in osc frameview gestures: %d", (uint32_t)[self.view.gestureRecognizers count]);
|
||||
//NSLog(@"in osc streamview gestures: %d", (uint32_t)[_streamView.gestureRecognizers count]);
|
||||
}
|
||||
|
||||
- (void)presentToolboxViewController{
|
||||
[self configOscLayoutTool];
|
||||
ToolboxViewController* oldToolboxVC = toolBoxViewController;
|
||||
toolBoxViewController = [[ToolboxViewController alloc] init];
|
||||
toolBoxViewController.specialEntryDelegate = self;
|
||||
toolBoxViewController.specialEntries = oldToolboxVC.specialEntries;
|
||||
[self configOscLayoutTool];
|
||||
[self presentViewController:toolBoxViewController animated:YES completion:^{
|
||||
//[self->toolBoxViewController setupConstraints];
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)configSwipeGestures{
|
||||
- (void)configGestures{
|
||||
_slideToSettingsRecognizer = [[CustomEdgeSlideGestureRecognizer alloc] initWithTarget:self action:@selector(edgeSwiped)];
|
||||
_slideToSettingsRecognizer.edges = _settings.slideToSettingsScreenEdge.intValue;
|
||||
_slideToSettingsRecognizer.normalizedThresholdDistance = _settings.slideToSettingsDistance.floatValue;
|
||||
@@ -271,6 +266,17 @@
|
||||
_slideToCmdToolRecognizer.delaysTouchesBegan = NO;
|
||||
_slideToCmdToolRecognizer.delaysTouchesEnded = NO;
|
||||
[self.view addGestureRecognizer:_slideToCmdToolRecognizer];
|
||||
|
||||
if([self isOscLayoutToolEnabled]){
|
||||
_oscLayoutTapRecoginizer = [[CustomTapGestureRecognizer alloc] initWithTarget:self action:@selector(handleWidgetLayoutGesture)];
|
||||
_oscLayoutTapRecoginizer.numberOfTouchesRequired = _settings.oscLayoutToolFingers.intValue; //tap a predefined number of fingers to open osc layout tool
|
||||
_oscLayoutTapRecoginizer.tapDownTimeThreshold = 0.2;
|
||||
_oscLayoutTapRecoginizer.delaysTouchesBegan = NO;
|
||||
_oscLayoutTapRecoginizer.delaysTouchesEnded = NO;
|
||||
if(_settings.touchMode.intValue == AbsoluteTouch) _oscLayoutTapRecoginizer.immediateTriggering = true; // make immediate triggering on for absolute touch mode
|
||||
[self.view addGestureRecognizer:_oscLayoutTapRecoginizer]; //
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (void)configZoomGestureAndAddStreamView{
|
||||
@@ -310,7 +316,7 @@
|
||||
overlayLevel = _settings.statsOverlayLevel.intValue;
|
||||
[self configOscLayoutTool];
|
||||
[self updateToolboxSpecialEntries];
|
||||
[self configSwipeGestures];
|
||||
[self configGestures];
|
||||
[self configZoomGestureAndAddStreamView];
|
||||
[self->_streamView disableOnScreenControls]; //don't know why but this must be called outside the streamview class, just put it here. execute in streamview class cause hang
|
||||
[self.mainFrameViewcontroller reloadStreamConfig]; // reload streamconfig
|
||||
@@ -628,10 +634,14 @@
|
||||
[_streamView keyboardWillHide];
|
||||
}
|
||||
|
||||
- (void)handleWidgetLayoutGesture{
|
||||
[self configOscLayoutTool];
|
||||
[self openWidgetLayoutTool];
|
||||
}
|
||||
|
||||
- (void)openWidgetLayoutTool{
|
||||
[self->_streamView disableOnScreenControls];
|
||||
[self->_streamView clearOnScreenKeyboardButtons]; // clear all onScreenKeyboardButtons before entering edit mode
|
||||
[self->_streamView clearOnScreenWidgets]; // clear all onScreenKeyboardButtons before entering edit mode
|
||||
_layoutOnScreenControlsVC.quickSwitchEnabled = false;
|
||||
_layoutOnScreenControlsVC.toolbarStackView.hidden = false;
|
||||
_layoutOnScreenControlsVC.toolbarRootView.hidden = false;
|
||||
@@ -640,7 +650,7 @@
|
||||
|
||||
- (void)switchWidgetProfile{
|
||||
[self->_streamView disableOnScreenControls];
|
||||
[self->_streamView clearOnScreenKeyboardButtons]; // clear all onScreenKeyboardButtons before entering edit mode
|
||||
[self->_streamView clearOnScreenWidgets]; // clear all onScreenKeyboardButtons before entering edit mode
|
||||
_layoutOnScreenControlsVC.quickSwitchEnabled = true;
|
||||
_layoutOnScreenControlsVC.toolbarStackView.hidden = true;
|
||||
_layoutOnScreenControlsVC.toolbarRootView.hidden = true;
|
||||
|
||||
Reference in New Issue
Block a user