From 00b06b7b703f5cd5a2ddfc2a020dad6710c415b8 Mon Sep 17 00:00:00 2001 From: True Zhuanjia Date: Tue, 7 Apr 2026 15:09:30 +0800 Subject: [PATCH] - update ui string - improve autodock --- VoidLink/Input/OnScreenWidgetView.swift | 13 +++++++++++++ VoidLink/Localization/Localizable.xcstrings | 14 +++++++------- .../ViewControllers/StreamFrameViewController.m | 2 +- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/VoidLink/Input/OnScreenWidgetView.swift b/VoidLink/Input/OnScreenWidgetView.swift index c20d9e54..29cd3e75 100644 --- a/VoidLink/Input/OnScreenWidgetView.swift +++ b/VoidLink/Input/OnScreenWidgetView.swift @@ -3140,6 +3140,10 @@ import ObjectiveC.runtime restartAutoDockCountdown() return } + if hasUnfoldedSubfolders() { + return + } + self.isUserInteractionEnabled = false guard let hostView = superview, !OnScreenWidgetView.editMode, @@ -3392,6 +3396,15 @@ import ObjectiveC.runtime } return parents } + + private func hasUnfoldedSubfolders() -> Bool { + for sequence in self.sequenceSet { + guard let widget = OnScreenWidgetView.mapping[sequence] else {continue} + if !widget.isFolder {continue} + if !widget.folded {return true} + } + return false + } private static func putWidget(_ widget:OnScreenWidgetView, into folder:OnScreenWidgetView){ guard !OnScreenWidgetView.getParentFolders(of: folder).contains(widget), !folder.isHidden else { return } diff --git a/VoidLink/Localization/Localizable.xcstrings b/VoidLink/Localization/Localizable.xcstrings index e573db9a..6bdd183e 100644 --- a/VoidLink/Localization/Localizable.xcstrings +++ b/VoidLink/Localization/Localizable.xcstrings @@ -4630,25 +4630,25 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "\n1. From %@ edge, slide %d%% screen width to open settings menu\n\n2. From %@ edge, slide %d%% screen width to open toolbox menu\n\n3. Slide from top 40%% of screen edge to avoid sending touch events to PC side" + "value" : "\n1. By default, The widget menu button will be automatically docked to edge after staying idle for 10 seconds.\n\n2. From %@ edge, slide %d%% screen width to open settings menu\n\n3. Slide from top 40%% of screen edge to avoid sending touch events to PC side" } }, "zh-Hans" : { "stringUnit" : { - "state" : "needs_review", - "value" : "\n1. 展开设置菜单: 从%@边缘滑动%d%%屏幕宽度\n\n2. 打开工具箱菜单: 从%@边缘滑动%d%%屏幕宽度\n\n3. 从40%%上半边缘滑动避免触控事件影响PC端" + "state" : "translated", + "value" : "\n1. 默认状态下,控件菜单按键在闲置10秒后将自动吸附屏幕边缘\n\n2. 展开设置菜单: 从%@边缘滑动%d%%屏幕宽度\n\n3. 从40%%上半边缘滑动避免触控事件影响PC端" } }, "zh-Hant" : { "stringUnit" : { - "state" : "needs_review", - "value" : "\n1. 展開設定選單:從%@邊緣滑動%d%%的螢幕寬度\n\n2. 開啟工具箱選單:從%@邊緣滑動%d%%的螢幕寬度\n\n3. 從螢幕邊緣上方40%%處滑動以避免將觸控事件傳送到電腦端" + "state" : "translated", + "value" : "\n1. 預設狀態下,控件選單按鍵在閒置 10 秒後將自動吸附螢幕邊緣\n\n2. 展開設定選單:從%@邊緣滑動%d%%的螢幕寬度\n\n3. 從螢幕邊緣上方40%%處滑動以避免將觸控事件傳送到電腦端" } }, "zh-HK" : { "stringUnit" : { - "state" : "needs_review", - "value" : "\n1. 展開設定選單:從%@邊緣滑動%d%%的螢幕寬度\n\n2. 開啟工具箱選單:從%@邊緣滑動%d%%的螢幕寬度\n\n3. 從螢幕邊緣上方40%%處滑動以避免將觸控事件傳送到電腦端" + "state" : "translated", + "value" : "\n1. 預設狀態下,控件選單按鍵在閒置 10 秒後將自動吸附螢幕邊緣\n\n2. 展開設定選單:從%@邊緣滑動%d%%的螢幕寬度\n\n3. 從螢幕邊緣上方40%%處滑動以避免將觸控事件傳送到電腦端" } } } diff --git a/VoidLink/ViewControllers/StreamFrameViewController.m b/VoidLink/ViewControllers/StreamFrameViewController.m index 741325f1..249bbc30 100644 --- a/VoidLink/ViewControllers/StreamFrameViewController.m +++ b/VoidLink/ViewControllers/StreamFrameViewController.m @@ -570,7 +570,7 @@ NSString* cmdToolEdgeSide = _settings.slideToSettingsScreenEdge.intValue == UIRectEdgeLeft ? [LocalizationHelper localizedStringForKey:@"right"] : [LocalizationHelper localizedStringForKey:@"left"]; uint8_t slideDist = (uint8_t)(_settings.slideToSettingsDistance.floatValue * 100); // 创建弹窗 - NSString* tipText = [LocalizationHelper localizedStringForKey:@"firstLaunchTip", settingsEdgeSide, slideDist, cmdToolEdgeSide, slideDist]; + NSString* tipText = [LocalizationHelper localizedStringForKey:@"firstLaunchTip", settingsEdgeSide, slideDist]; [AlertControllerUtil showAlertIn:self title:[LocalizationHelper localizedStringForKey:@"First Launch Tips"]