Remote toolbar snap edges
1. Translations 2. Apply option to remote windows on changed Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
da68a7bc18
commit
dc07262940
53 changed files with 163 additions and 39 deletions
|
|
@ -491,9 +491,12 @@ class _GeneralState extends State<_General> {
|
|||
if (!isWeb && !bind.isIncomingOnly())
|
||||
_OptionCheckBox(
|
||||
context,
|
||||
'Allow docking remote toolbar to any window edge',
|
||||
'allow-remote-toolbar-docking-any-edge-tip',
|
||||
kOptionAllowMultiEdgeToolbarDock,
|
||||
isServer: false,
|
||||
update: (_) {
|
||||
reloadAllWindows();
|
||||
},
|
||||
),
|
||||
_OptionCheckBox(context, 'Adaptive bitrate', kOptionEnableAbr),
|
||||
if (!isWeb) wallpaper(),
|
||||
|
|
|
|||
|
|
@ -403,8 +403,10 @@ class _RemoteToolbarState extends State<RemoteToolbar> {
|
|||
// handle just slides it horizontally — preserving long-standing UX while
|
||||
// still fixing the bug where dragging only moved the handle. When true,
|
||||
// the user has opted into multi-edge docking with nearest-edge snap.
|
||||
// Read once on init; takes effect on next session.
|
||||
// Kept in sync after settings-triggered rebuilds.
|
||||
final _multiEdgeEnabled = false.obs;
|
||||
bool _pendingDockingOptionSync = false;
|
||||
int _dockingOptionSyncSerial = 0;
|
||||
|
||||
int get windowId => stateGlobal.windowId;
|
||||
|
||||
|
|
@ -426,47 +428,96 @@ class _RemoteToolbarState extends State<RemoteToolbar> {
|
|||
void _minimize() async =>
|
||||
await WindowController.fromWindowId(windowId).minimize();
|
||||
|
||||
Future<void> _syncDockingOptions({required bool force}) async {
|
||||
final syncSerial = ++_dockingOptionSyncSerial;
|
||||
if (_dragging.isTrue) {
|
||||
_pendingDockingOptionSync = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Use the canonical helper so the option's documented default semantics
|
||||
// apply (allow-* prefix => default false). Keeping it raw-string would
|
||||
// diverge from how _OptionCheckBox displays the same key.
|
||||
final multiEdgeEnabled =
|
||||
mainGetLocalBoolOptionSync(kOptionAllowMultiEdgeToolbarDock);
|
||||
final wasMultiEdgeEnabled = _multiEdgeEnabled.value;
|
||||
if (!force && wasMultiEdgeEnabled == multiEdgeEnabled) return;
|
||||
|
||||
final savedFraction = await bind.sessionGetOption(
|
||||
sessionId: widget.ffi.sessionId, arg: kOptionRemoteMenubarFraction);
|
||||
// Backward compat: legacy horizontal-only position.
|
||||
final legacyFraction = await bind.sessionGetOption(
|
||||
sessionId: widget.ffi.sessionId, arg: _legacyRemoteMenubarDragX);
|
||||
if (syncSerial != _dockingOptionSyncSerial) return;
|
||||
|
||||
var nextEdge = _edge.value;
|
||||
var savedFractionForNextEdge = savedFraction;
|
||||
var keepCurrentPosition = false;
|
||||
if (!multiEdgeEnabled) {
|
||||
nextEdge = _ToolbarEdge.top;
|
||||
} else if (force || wasMultiEdgeEnabled) {
|
||||
final edgeStr = await bind.sessionGetOption(
|
||||
sessionId: widget.ffi.sessionId, arg: kOptionRemoteMenubarEdge);
|
||||
if (syncSerial != _dockingOptionSyncSerial) return;
|
||||
nextEdge = _parseToolbarEdge(edgeStr);
|
||||
} else {
|
||||
// The setting changed from top-only to multi-edge while this toolbar is
|
||||
// already visible. Keep its current position instead of jumping to the
|
||||
// last saved multi-edge dock.
|
||||
nextEdge = _ToolbarEdge.top;
|
||||
savedFractionForNextEdge = _fraction.value.toString();
|
||||
keepCurrentPosition = true;
|
||||
}
|
||||
|
||||
final rawFraction = _toolbarRawFraction(
|
||||
multiEdgeEnabled: multiEdgeEnabled,
|
||||
edge: nextEdge,
|
||||
savedFraction: savedFractionForNextEdge,
|
||||
legacyFraction: legacyFraction,
|
||||
);
|
||||
// Clamp to the saved drag-bound contract so a corrupted or out-of-range
|
||||
// saved value can't bypass it until the user drags again.
|
||||
final dragLeft = double.tryParse(
|
||||
bind.mainGetLocalOption(key: kOptionRemoteMenubarDragLeft)) ??
|
||||
0.0;
|
||||
final dragRight = double.tryParse(
|
||||
bind.mainGetLocalOption(key: kOptionRemoteMenubarDragRight)) ??
|
||||
1.0;
|
||||
final nextFraction = (double.tryParse(rawFraction) ?? 0.5)
|
||||
.clamp(dragLeft, dragRight)
|
||||
.toDouble();
|
||||
if (syncSerial != _dockingOptionSyncSerial) return;
|
||||
_edge.value = nextEdge;
|
||||
_fraction.value = nextFraction;
|
||||
_multiEdgeEnabled.value = multiEdgeEnabled;
|
||||
_pendingDockingOptionSync = false;
|
||||
if (keepCurrentPosition) {
|
||||
bind.sessionPeerOption(
|
||||
sessionId: widget.ffi.sessionId,
|
||||
name: kOptionRemoteMenubarEdge,
|
||||
value: _toolbarEdgeToString(nextEdge),
|
||||
);
|
||||
bind.sessionPeerOption(
|
||||
sessionId: widget.ffi.sessionId,
|
||||
name: kOptionRemoteMenubarFraction,
|
||||
value: nextFraction.toString(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void _syncDockingOptionsAfterDragIfNeeded() {
|
||||
if (!_pendingDockingOptionSync) return;
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
await _syncDockingOptions(force: false);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
initState() {
|
||||
super.initState();
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
// Use the canonical helper so the option's documented default semantics
|
||||
// apply (allow-* prefix => default false). Keeping it raw-string would
|
||||
// diverge from how _OptionCheckBox displays the same key.
|
||||
_multiEdgeEnabled.value =
|
||||
mainGetLocalBoolOptionSync(kOptionAllowMultiEdgeToolbarDock);
|
||||
final savedFraction = await bind.sessionGetOption(
|
||||
sessionId: widget.ffi.sessionId, arg: kOptionRemoteMenubarFraction);
|
||||
// Backward compat: legacy horizontal-only position.
|
||||
final legacyFraction = await bind.sessionGetOption(
|
||||
sessionId: widget.ffi.sessionId, arg: _legacyRemoteMenubarDragX);
|
||||
// Only honour a saved edge when the user has opted into multi-edge
|
||||
// docking. Without the opt-in, the toolbar stays on the top edge.
|
||||
if (_multiEdgeEnabled.value) {
|
||||
final edgeStr = await bind.sessionGetOption(
|
||||
sessionId: widget.ffi.sessionId, arg: kOptionRemoteMenubarEdge);
|
||||
_edge.value = _parseToolbarEdge(edgeStr);
|
||||
} else {
|
||||
_edge.value = _ToolbarEdge.top;
|
||||
}
|
||||
final rawFraction = _toolbarRawFraction(
|
||||
multiEdgeEnabled: _multiEdgeEnabled.value,
|
||||
edge: _edge.value,
|
||||
savedFraction: savedFraction,
|
||||
legacyFraction: legacyFraction,
|
||||
);
|
||||
// Clamp to the saved drag-bound contract so a corrupted or out-of-range
|
||||
// saved value can't bypass it until the user drags again.
|
||||
final dragLeft = double.tryParse(
|
||||
bind.mainGetLocalOption(key: kOptionRemoteMenubarDragLeft)) ??
|
||||
0.0;
|
||||
final dragRight = double.tryParse(
|
||||
bind.mainGetLocalOption(key: kOptionRemoteMenubarDragRight)) ??
|
||||
1.0;
|
||||
_fraction.value = (double.tryParse(rawFraction) ?? 0.5)
|
||||
.clamp(dragLeft, dragRight)
|
||||
.toDouble();
|
||||
await _syncDockingOptions(force: true);
|
||||
// Initialize toolbar states (collapse, hide) from session options
|
||||
widget.state.init(widget.ffi.sessionId);
|
||||
});
|
||||
|
|
@ -487,6 +538,14 @@ class _RemoteToolbarState extends State<RemoteToolbar> {
|
|||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant RemoteToolbar oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
await _syncDockingOptions(force: false);
|
||||
});
|
||||
}
|
||||
|
||||
_debouncerHideProc(int v) {
|
||||
if (!pin && collapse.isFalse && _isCursorOverImage && _dragging.isFalse) {
|
||||
collapse.value = true;
|
||||
|
|
@ -601,6 +660,8 @@ class _RemoteToolbarState extends State<RemoteToolbar> {
|
|||
previewEdge: _previewEdge,
|
||||
previewFraction: _previewFraction,
|
||||
toolbarSize: _toolbarSize,
|
||||
syncDockingOptionsAfterDragIfNeeded:
|
||||
_syncDockingOptionsAfterDragIfNeeded,
|
||||
isHorizontal: isHorizontal,
|
||||
multiEdgeEnabled: _multiEdgeEnabled.value,
|
||||
toolbarState: widget.state,
|
||||
|
|
@ -2786,6 +2847,7 @@ class _DraggableShowHide extends StatefulWidget {
|
|||
final Rxn<_ToolbarEdge> previewEdge;
|
||||
final Rxn<double> previewFraction;
|
||||
final Rxn<Size> toolbarSize;
|
||||
final VoidCallback syncDockingOptionsAfterDragIfNeeded;
|
||||
final bool isHorizontal;
|
||||
// Whether multi-edge docking is enabled for this session (toggled in
|
||||
// Settings -> Other). When false, the drag handle slides the toolbar
|
||||
|
|
@ -2807,6 +2869,7 @@ class _DraggableShowHide extends StatefulWidget {
|
|||
required this.previewEdge,
|
||||
required this.previewFraction,
|
||||
required this.toolbarSize,
|
||||
required this.syncDockingOptionsAfterDragIfNeeded,
|
||||
required this.isHorizontal,
|
||||
required this.multiEdgeEnabled,
|
||||
required this.dragging,
|
||||
|
|
@ -2956,6 +3019,7 @@ class _DraggableShowHideState extends State<_DraggableShowHide> {
|
|||
widget.previewFraction.value = null;
|
||||
widget.dragging.value = false;
|
||||
_resetDragTracking();
|
||||
widget.syncDockingOptionsAfterDragIfNeeded();
|
||||
if (newEdge == null || frac == null) return;
|
||||
widget.edge.value = newEdge;
|
||||
widget.fraction.value = frac;
|
||||
|
|
@ -2987,6 +3051,7 @@ class _DraggableShowHideState extends State<_DraggableShowHide> {
|
|||
widget.previewFraction.value = null;
|
||||
widget.dragging.value = false;
|
||||
_resetDragTracking();
|
||||
widget.syncDockingOptionsAfterDragIfNeeded();
|
||||
}
|
||||
|
||||
Widget _buildDraggable(BuildContext context) {
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "كلمة المرور مخفية"),
|
||||
("preset-password-in-use-tip", "كلمة المرور المحددة مسبقًا قيد الاستخدام"),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "Зададзены пастаянны пароль (скрыты)."),
|
||||
("preset-password-in-use-tip", "Пададзены пароль цяпер выкарыстоўваецца"),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "永久密码已设置(已隐藏)"),
|
||||
("preset-password-in-use-tip", "当前使用预设密码"),
|
||||
("Enable privacy mode", "允许隐私模式"),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "Ein permanentes Passwort wurde festgelegt (ausgeblendet)."),
|
||||
("preset-password-in-use-tip", "Das voreingestellte Passwort wird derzeit verwendet."),
|
||||
("Enable privacy mode", "Datenschutzmodus aktivieren"),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -274,5 +274,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("keep-awake-during-incoming-sessions-label", "Keep screen awake during incoming sessions"),
|
||||
("password-hidden-tip", "Permanent password is set (hidden)."),
|
||||
("preset-password-in-use-tip", "Preset password is currently in use."),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", "Allow docking remote toolbar to any window edge"),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "Le mot de passe permanent est défini (masqué)."),
|
||||
("preset-password-in-use-tip", "Le mot de passe prédéfini est actuellement utilisé."),
|
||||
("Enable privacy mode", "Activer le mode de confidentialité"),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -654,6 +654,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("Accessible devices", "એક્સેસિબલ ઉપકરણો"),
|
||||
("upgrade_remote_rustdesk_client_to_{}_tip", "રિમોટ ક્લાયન્ટને {} માં અપગ્રેડ કરો"),
|
||||
("d3d_render_tip", "D3D રેન્ડરિંગ વાપરો"),
|
||||
("Use D3D rendering", ""),
|
||||
("Printer", "પ્રિન્ટર"),
|
||||
("printer-os-requirement-tip", "પ્રિન્ટિંગ માટે Windows જરૂરી છે."),
|
||||
("printer-requires-installed-{}-client-tip", "આ માટે {} ક્લાયન્ટ ઇન્સ્ટોલ હોવું જોઈએ."),
|
||||
|
|
@ -743,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "સુરક્ષા માટે પાસવર્ડ છુપાવેલ છે."),
|
||||
("preset-password-in-use-tip", "પ્રીસેટ પાસવર્ડ વપરાશમાં છે."),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -654,6 +654,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("Accessible devices", "सुलभ डिवाइस"),
|
||||
("upgrade_remote_rustdesk_client_to_{}_tip", "रिमोट RustDesk क्लाइंट को संस्करण {} में अपग्रेड करें"),
|
||||
("d3d_render_tip", "D3D रेंडरिंग का उपयोग करें"),
|
||||
("Use D3D rendering", ""),
|
||||
("Printer", "प्रिंटर"),
|
||||
("printer-os-requirement-tip", "प्रिंटिंग के लिए Windows आवश्यक है।"),
|
||||
("printer-requires-installed-{}-client-tip", "इसके लिए क्लाइंट साइड पर {} इंस्टॉल होना चाहिए।"),
|
||||
|
|
@ -742,5 +743,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("Display Name", "प्रदर्शित नाम"),
|
||||
("password-hidden-tip", "पासवर्ड सुरक्षा के लिए छिपा हुआ है।"),
|
||||
("preset-password-in-use-tip", "पूर्व-निर्धारित पासवर्ड उपयोग में है।"),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "Állandó jelszó lett beállítva (rejtett)."),
|
||||
("preset-password-in-use-tip", "Jelenleg az alapértelmezett jelszót használja."),
|
||||
("Enable privacy mode", "Adatvédelmi mód aktiválása"),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "È impostata una password permanente (nascosta)."),
|
||||
("preset-password-in-use-tip", "È attualmente in uso la password preimpostata."),
|
||||
("Enable privacy mode", "Abilita modalità privacy"),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "永続的なパスワードが設定されています (非表示)"),
|
||||
("preset-password-in-use-tip", "プリセットパスワードが現在使用されています"),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "영구 비밀번호가 설정되었습니다 (숨김)."),
|
||||
("preset-password-in-use-tip", "현재 사전 설정된 비밀번호가 사용 중입니다."),
|
||||
("Enable privacy mode", "개인정보 보호 모드 사용함"),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -654,6 +654,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("Accessible devices", "ലഭ്യമായ ഉപകരണങ്ങൾ"),
|
||||
("upgrade_remote_rustdesk_client_to_{}_tip", "റിമോട്ട് പതിപ്പ് {} ലേക്ക് മാറ്റുക"),
|
||||
("d3d_render_tip", "D3D റെൻഡറിംഗ് ഉപയോഗിക്കുക"),
|
||||
("Use D3D rendering", ""),
|
||||
("Printer", "പ്രിന്റർ"),
|
||||
("printer-os-requirement-tip", "പ്രിന്റിംഗിന് വിൻഡോസ് വേണം."),
|
||||
("printer-requires-installed-{}-client-tip", "ഇതിന് {} ക്ലയന്റ് ഇൻസ്റ്റാൾ ചെയ്യണം."),
|
||||
|
|
@ -742,5 +743,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("Display Name", "ഡിസ്പ്ലേ പേര്"),
|
||||
("password-hidden-tip", "സുരക്ഷയ്ക്കായി പാസ്വേഡ് മറച്ചിരിക്കുന്നു."),
|
||||
("preset-password-in-use-tip", "പ്രീസെറ്റ് പാസ്വേഡ് ഉപയോഗത്തിലാണ്."),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "Er is een permanent wachtwoord ingesteld (verborgen)."),
|
||||
("preset-password-in-use-tip", "Het basis wachtwoord is momenteel in gebruik."),
|
||||
("Enable privacy mode", "Privacymodus inschakelen"),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "Ustawiono (ukryto) stare hasło."),
|
||||
("preset-password-in-use-tip", "Obecnie używane jest hasło domyślne."),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -540,7 +540,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("auto_disconnect_option_tip", "Deconectează automat sesiunile de la distanță după o perioadă de inactivitate."),
|
||||
("Connection failed due to inactivity", "Conexiunea a eșuat din cauza inactivității"),
|
||||
("Check for software update on startup", "Verifică actualizări la pornire"),
|
||||
("upgrade_rustdesk_server_pro_{}_tip", "Versiunea serverului RustDesk Pro este mai mică decât {}. Te rugăm să o actualizezi."),
|
||||
("upgrade_rustdesk_server_pro_to_{}_tip", "Versiunea serverului RustDesk Pro este mai mică decât {}. Te rugăm să o actualizezi."),
|
||||
("pull_group_failed_tip", "Sincronizarea grupului a eșuat. Verifică conexiunea la rețea sau autentifică-te din nou."),
|
||||
("Filter by intersection", "Filtrează prin intersecție"),
|
||||
("Remove wallpaper during incoming sessions", "Elimină imaginea de fundal în timpul sesiunilor primite"),
|
||||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "Parola este ascunsă din motive de securitate. Fă clic pe pictograma ochiului pentru a o afișa."),
|
||||
("preset-password-in-use-tip", "Se folosește o parolă prestabilită. Se recomandă setarea unei parole personalizate pentru securitate sporită."),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "Установлен постоянный пароль (скрытый)."),
|
||||
("preset-password-in-use-tip", "Установленный пароль сейчас используется."),
|
||||
("Enable privacy mode", "Использовать режим конфиденциальности"),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "Parola gizli"),
|
||||
("preset-password-in-use-tip", "Önceden ayarlanmış parola kullanılıyor"),
|
||||
("Enable privacy mode", "Gizlilik modunu etkinleştir"),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", "固定密碼已設定(已隱藏)"),
|
||||
("preset-password-in-use-tip", "目前正在使用預設密碼"),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -744,5 +744,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||
("password-hidden-tip", ""),
|
||||
("preset-password-in-use-tip", ""),
|
||||
("Enable privacy mode", ""),
|
||||
("allow-remote-toolbar-docking-any-edge-tip", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue