From af1f0e75c78b2f21311b93a71f5d074af100043d Mon Sep 17 00:00:00 2001 From: True Zhuanjia Date: Thu, 28 May 2026 14:21:02 +0800 Subject: [PATCH] more preparations for new widget template --- VoidLink/Input/OnScreenWidgetView.swift | 6 +- VoidLink/Input/StreamView.m | 1 + VoidLink/Localization/Localizable.xcstrings | 58 +++++++++++++++++++ .../ViewControllers/MainFrameViewController.m | 6 ++ VoidLinkPreview/WidgetPickerView.swift | 10 ++++ 5 files changed, 78 insertions(+), 3 deletions(-) diff --git a/VoidLink/Input/OnScreenWidgetView.swift b/VoidLink/Input/OnScreenWidgetView.swift index 9066415f..823a5f32 100644 --- a/VoidLink/Input/OnScreenWidgetView.swift +++ b/VoidLink/Input/OnScreenWidgetView.swift @@ -3854,9 +3854,9 @@ import ObjectiveC.runtime } } - if folder.buttonMode == .slideAndHold, folder.isOnlyRootFolder(), folder.revealMode == .coexist { - for otherUnfoldedFolder in OnScreenWidgetView.mapping.values.filter({$0.isFolder && !$0.folded && $0 != folder}) { - OnScreenWidgetView.setCollection(hidden: !folded, for: otherUnfoldedFolder) + if folder.buttonMode == .slideAndHold, folder.parentSequence == -1, folder.revealMode == .coexist { + for unfoldedSubfolder in OnScreenWidgetView.mapping.values.filter({$0.isFolder && !$0.folded && $0 != folder && OnScreenWidgetView.getParentFolders(of: $0).contains(folder)}) { + OnScreenWidgetView.setCollection(hidden: !folded, for: unfoldedSubfolder) } } } diff --git a/VoidLink/Input/StreamView.m b/VoidLink/Input/StreamView.m index e834fe35..87726c90 100644 --- a/VoidLink/Input/StreamView.m +++ b/VoidLink/Input/StreamView.m @@ -759,6 +759,7 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5; widgetView.walkKeyActionType = buttonState.walkKeyActionType; widgetView.walkKeyThreshold = buttonState.walkKeyThreshold; + widgetView.hidden = !OnScreenWidgetView.enableFolderAnimation && widgetView.parentSequence != -1; // Add the widgetView to the view controller's view [self->_streamFrameTopLayerView addSubview:widgetView]; // add keyboard button to the stream frame view. must add it to the target view before setting location. buttonState.position = [self denormalizeWidgetPosition:buttonState.position]; diff --git a/VoidLink/Localization/Localizable.xcstrings b/VoidLink/Localization/Localizable.xcstrings index ae6c374f..6978b0b0 100644 --- a/VoidLink/Localization/Localizable.xcstrings +++ b/VoidLink/Localization/Localizable.xcstrings @@ -1069,6 +1069,35 @@ } } }, + "=dummyPad" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dummy pad" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "触控挡板" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "觸控擋板" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "觸控擋板" + } + } + } + }, "=edit" : { "extractionState" : "manual", "localizations" : { @@ -6356,6 +6385,35 @@ } } }, + "dummyPadTip" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A dummy touchpad that does nothing" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "一块啥都不干的挡板区域" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "一塊啥都不幹的擋板區域" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "一塊啥都不幹的擋板區域" + } + } + } + }, "e.g. ctrl, lswheel, wasdpad..." : { "extractionState" : "manual", "localizations" : { diff --git a/VoidLink/ViewControllers/MainFrameViewController.m b/VoidLink/ViewControllers/MainFrameViewController.m index cc4ffc6b..29bb1c38 100644 --- a/VoidLink/ViewControllers/MainFrameViewController.m +++ b/VoidLink/ViewControllers/MainFrameViewController.m @@ -787,6 +787,12 @@ static NSMutableSet* hostList; } - (void) prepareToStreamApp:(TemporaryApp *)app { + + self.navigationController.navigationBar.hidden = true; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + self.navigationController.navigationBar.hidden = false; + }); + launchedApp = app; [self updateResolutionAccordingly]; self.revealViewController.isStreaming = true; // tell the revealViewController streaming is started. diff --git a/VoidLinkPreview/WidgetPickerView.swift b/VoidLinkPreview/WidgetPickerView.swift index 2ab85deb..f5be7efd 100644 --- a/VoidLinkPreview/WidgetPickerView.swift +++ b/VoidLinkPreview/WidgetPickerView.swift @@ -764,6 +764,16 @@ struct WidgetPickerView: View { allowsShortcutCombo: false, forcedComboMode: .skill ), + FunctionalButtonOption( + localizationKey: "=dummyPad", + cmd: "DUMMYPAD", + tip: LocalizationHelper.localizedString(forKey: "dummyPadTip"), + allowsKeyboardCombination: false, + allowsGamepadCombination: false, + allowsSkillCombo: false, + allowsShortcutCombo: false, + forcedComboMode: .skill + ), ] private let shortcutLibraryOptions: [FunctionalButtonOption] = [