From a0d1982a1461972955565c3e2ac7a907102affb8 Mon Sep 17 00:00:00 2001 From: True Zhuanjia Date: Fri, 10 Apr 2026 17:05:04 +0800 Subject: [PATCH] autoDock & toolbox gesture fixes --- .../xcshareddata/WorkspaceSettings.xcsettings | 2 +- VoidLink/Input/CommandManager.swift | 3 +++ VoidLink/Input/OnScreenWidgetView.swift | 7 +++++++ .../ViewControllers/CustomEdgeSlideGestureRecognizer.m | 2 ++ VoidLink/ViewControllers/SettingsViewController.m | 2 +- VoidLink/ViewControllers/StreamFrameViewController.m | 2 +- 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/VoidLink.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/VoidLink.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings index 08de0be8..54782e32 100644 --- a/VoidLink.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ b/VoidLink.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -3,6 +3,6 @@ IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded - + diff --git a/VoidLink/Input/CommandManager.swift b/VoidLink/Input/CommandManager.swift index 8e87ec30..d1baec87 100644 --- a/VoidLink/Input/CommandManager.swift +++ b/VoidLink/Input/CommandManager.swift @@ -132,6 +132,9 @@ import UIKit @objc public static let functionalButtonCmds: [String] = [ "SETTINGS", "TOOLBOX", + "DISCONNECT", + "QUITAPP", + "PIP", "WIDGETTOOL", "ABSGAMEPAD", "WIDGETPROFILES", diff --git a/VoidLink/Input/OnScreenWidgetView.swift b/VoidLink/Input/OnScreenWidgetView.swift index 05168633..c4d32bf3 100644 --- a/VoidLink/Input/OnScreenWidgetView.swift +++ b/VoidLink/Input/OnScreenWidgetView.swift @@ -18,6 +18,7 @@ import ObjectiveC.runtime @objc public static var mapping: [Int16:OnScreenWidgetView] = [:] @objc public static var isRestoring: Bool = false + @objc public static var hasRestoredFromAutoDock: Bool = false @objc public static func set(widget:OnScreenWidgetView, for key:Int16) { mapping[key] = widget } @@ -3017,6 +3018,11 @@ import ObjectiveC.runtime @objc private func vl_autoDock_touchesEnded(_ touches: Set, with event: UIEvent?) { OnScreenWidgetView.autoDockOriginalTouchesEndedIMP?(self, #selector(OnScreenWidgetView.touchesEnded(_:with:)), touches, event) guard autoDockEnabled else { return } + if OnScreenWidgetView.hasRestoredFromAutoDock { + DispatchQueue.global().asyncAfter(deadline: .now() + 0.02){ + OnScreenWidgetView.hasRestoredFromAutoDock = false + } + } autoDockRestartCountdownIfNeeded() } @@ -3194,6 +3200,7 @@ import ObjectiveC.runtime private func autoDockRestoreWidget(animated: Bool) { guard autoDockIsDocked, let restoreCenter = autoDockStoredCenter else { return } + OnScreenWidgetView.hasRestoredFromAutoDock = true autoDockStopCountdown() autoDockStopSettledAlphaTimer() autoDockRestoreOriginalSize() diff --git a/VoidLink/ViewControllers/CustomEdgeSlideGestureRecognizer.m b/VoidLink/ViewControllers/CustomEdgeSlideGestureRecognizer.m index 702d854d..26205d72 100644 --- a/VoidLink/ViewControllers/CustomEdgeSlideGestureRecognizer.m +++ b/VoidLink/ViewControllers/CustomEdgeSlideGestureRecognizer.m @@ -10,6 +10,7 @@ #import "CustomEdgeSlideGestureRecognizer.h" #import +#import "VoidLink-Swift.h" @implementation CustomEdgeSlideGestureRecognizer UITouch* capturedUITouch; @@ -52,6 +53,7 @@ CGFloat startPointX; - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { // [super touchesEnded:touches withEvent:event]; if(_excludePencilEvent && touches.anyObject.type != UITouchTypeDirect) return; + if(OnScreenWidgetView.hasRestoredFromAutoDock) return; if([touches containsObject:capturedUITouch]){ CGFloat _endPointX = [capturedUITouch locationInView:self.view].x; CGFloat screenWidthInPoints = self.view.frame.size.width; diff --git a/VoidLink/ViewControllers/SettingsViewController.m b/VoidLink/ViewControllers/SettingsViewController.m index f6d181e5..9ab4b57a 100644 --- a/VoidLink/ViewControllers/SettingsViewController.m +++ b/VoidLink/ViewControllers/SettingsViewController.m @@ -900,7 +900,7 @@ BOOL isCustomResolution(int resolutionSelected) { [self addSetting:self.softKeyboardGestureStack ofId:@"softKeyboardGestureStack" withInfoTag:YES withDynamicLabel:NO to:gesturesSection]; [self addSetting:self.slideToSettingsScreenEdgeStack ofId:@"slideToSettingsScreenEdgeStack" withInfoTag:NO withDynamicLabel:NO to:gesturesSection]; - // [self addSetting:self.slideToToolboxScreenEdgeStack ofId:@"slideToToolboxScreenEdgeStack" withInfoTag:NO withDynamicLabel:NO to:gesturesSection]; + [self addSetting:self.slideToToolboxScreenEdgeStack ofId:@"slideToToolboxScreenEdgeStack" withInfoTag:NO withDynamicLabel:NO to:gesturesSection]; [self addSetting:self.slideToSettingsDistanceStack ofId:@"slideToSettingsDistanceStack" withInfoTag:YES withDynamicLabel:YES to:gesturesSection]; [self addSetting:self.edgeSlidingSensitivityStack ofId:@"edgeSlidingSensitivityStack" withInfoTag:YES withDynamicLabel:YES to:gesturesSection]; [gesturesSection addToParentStack:_parentStack]; diff --git a/VoidLink/ViewControllers/StreamFrameViewController.m b/VoidLink/ViewControllers/StreamFrameViewController.m index b5a50243..a775564a 100644 --- a/VoidLink/ViewControllers/StreamFrameViewController.m +++ b/VoidLink/ViewControllers/StreamFrameViewController.m @@ -298,7 +298,7 @@ _slideToToolboxRecognizer.normalizedThresholdDistance = _settings.slideToSettingsDistance.floatValue; _slideToToolboxRecognizer.delaysTouchesBegan = NO; _slideToToolboxRecognizer.delaysTouchesEnded = NO; - // [self.view addGestureRecognizer:_slideToToolboxRecognizer]; + [self.view addGestureRecognizer:_slideToToolboxRecognizer]; if([self isOscLayoutToolEnabled]){ _oscLayoutTapRecoginizer = [[CustomTapGestureRecognizer alloc] initWithTarget:self action:@selector(handleWidgetLayoutGesture)];