diff --git a/flutter/lib/common/widgets/address_book.dart b/flutter/lib/common/widgets/address_book.dart index 78bd20ef0336..ae07c1498cf1 100644 --- a/flutter/lib/common/widgets/address_book.dart +++ b/flutter/lib/common/widgets/address_book.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:bot_toast/bot_toast.dart'; import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dynamic_layouts/dynamic_layouts.dart'; import 'package:flutter/material.dart'; @@ -316,13 +317,14 @@ class _AddressBookState extends State { Widget _buildTags() { return Obx(() { - final List tags; + List tags; if (gFFI.abModel.sortTags.value) { tags = gFFI.abModel.currentAbTags.toList(); tags.sort(); } else { - tags = gFFI.abModel.currentAbTags; + tags = gFFI.abModel.currentAbTags.toList(); } + tags = [kUntagged, ...tags].toList(); final editPermission = gFFI.abModel.current.canWrite(); tagBuilder(String e) { return AddressBookTag( @@ -669,6 +671,14 @@ class _AddressBookState extends State { } else { final tags = field.trim().split(RegExp(r"[\s,;\n]+")); field = tags.join(','); + for (var t in [kUntagged, translate(kUntagged)]) { + if (tags.contains(t)) { + BotToast.showText( + contentColor: Colors.red, text: 'Tag name cannot be "$t"'); + isInProgress = false; + return; + } + } gFFI.abModel.addTags(tags); // final currentPeers } @@ -741,12 +751,14 @@ class AddressBookTag extends StatelessWidget { } const double radius = 8; + final isUnTagged = name == kUntagged; + final showAction = showActionMenu && !isUnTagged; return GestureDetector( onTap: onTap, - onTapDown: showActionMenu ? setPosition : null, - onSecondaryTapDown: showActionMenu ? setPosition : null, - onSecondaryTap: showActionMenu ? () => _showMenu(context, pos) : null, - onLongPress: showActionMenu ? () => _showMenu(context, pos) : null, + onTapDown: showAction ? setPosition : null, + onSecondaryTapDown: showAction ? setPosition : null, + onSecondaryTap: showAction ? () => _showMenu(context, pos) : null, + onLongPress: showAction ? () => _showMenu(context, pos) : null, child: Obx(() => Container( decoration: BoxDecoration( color: tags.contains(name) @@ -758,17 +770,18 @@ class AddressBookTag extends StatelessWidget { child: IntrinsicWidth( child: Row( children: [ - Container( - width: radius, - height: radius, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: tags.contains(name) - ? Colors.white - : gFFI.abModel.getCurrentAbTagColor(name)), - ).marginOnly(right: radius / 2), + if (!isUnTagged) + Container( + width: radius, + height: radius, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: tags.contains(name) + ? Colors.white + : gFFI.abModel.getCurrentAbTagColor(name)), + ).marginOnly(right: radius / 2), Expanded( - child: Text(name, + child: Text(isUnTagged ? translate(name) : name, style: TextStyle( overflow: TextOverflow.ellipsis, color: tags.contains(name) ? Colors.white : null)), diff --git a/flutter/lib/common/widgets/peers_view.dart b/flutter/lib/common/widgets/peers_view.dart index 7f16850219f4..e14e198bd105 100644 --- a/flutter/lib/common/widgets/peers_view.dart +++ b/flutter/lib/common/widgets/peers_view.dart @@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hbb/consts.dart'; import 'package:flutter_hbb/desktop/widgets/scroll_wrapper.dart'; +import 'package:flutter_hbb/models/ab_model.dart'; import 'package:flutter_hbb/models/peer_tab_model.dart'; import 'package:flutter_hbb/models/state_model.dart'; import 'package:get/get.dart'; @@ -532,15 +533,22 @@ class AddressBookPeersView extends BasePeersView { if (selectedTags.isEmpty) { return true; } + // The result of a no-tag union with normal tags, still allows normal tags to perform union or intersection operations. + final selectedNormalTags = + selectedTags.where((tag) => tag != kUntagged).toList(); + if (selectedTags.contains(kUntagged)) { + if (idents.isEmpty) return true; + if (selectedNormalTags.isEmpty) return false; + } if (gFFI.abModel.filterByIntersection.value) { - for (final tag in selectedTags) { + for (final tag in selectedNormalTags) { if (!idents.contains(tag)) { return false; } } return true; } else { - for (final tag in selectedTags) { + for (final tag in selectedNormalTags) { if (idents.contains(tag)) { return true; } diff --git a/flutter/lib/mobile/pages/remote_page.dart b/flutter/lib/mobile/pages/remote_page.dart index 1dee69b94ee7..4457cbe26a26 100644 --- a/flutter/lib/mobile/pages/remote_page.dart +++ b/flutter/lib/mobile/pages/remote_page.dart @@ -26,6 +26,19 @@ import '../widgets/dialog.dart'; final initText = '1' * 1024; +// Workaround for Android (default input method, Microsoft SwiftKey keyboard) when using physical keyboard. +// When connecting a physical keyboard, `KeyEvent.physicalKey.usbHidUsage` are wrong is using Microsoft SwiftKey keyboard. +// https://github.com/flutter/flutter/issues/159384 +// https://github.com/flutter/flutter/issues/159383 +void _disableAndroidSoftKeyboard({bool? isKeyboardVisible}) { + if (isAndroid) { + if (isKeyboardVisible != true) { + // `enable_soft_keyboard` will be set to `true` when clicking the keyboard icon, in `openKeyboard()`. + gFFI.invokeMethod("enable_soft_keyboard", false); + } + } +} + class RemotePage extends StatefulWidget { RemotePage({Key? key, required this.id, this.password, this.isSharedPassword}) : super(key: key); @@ -99,6 +112,8 @@ class _RemotePageState extends State with WidgetsBindingObserver { if (gFFI.recordingModel.start) { showToast(translate('Automatically record outgoing sessions')); } + _disableAndroidSoftKeyboard( + isKeyboardVisible: keyboardVisibilityController.isVisible); }); WidgetsBinding.instance.addObserver(this); } @@ -1244,7 +1259,9 @@ void showOptions( toggles + [privacyModeWidget]), ); - }, clickMaskDismiss: true, backDismiss: true); + }, clickMaskDismiss: true, backDismiss: true).then((value) { + _disableAndroidSoftKeyboard(); + }); } TTextMenu? getVirtualDisplayMenu(FFI ffi, String id) { @@ -1263,7 +1280,9 @@ TTextMenu? getVirtualDisplayMenu(FFI ffi, String id) { children: children, ), ); - }, clickMaskDismiss: true, backDismiss: true); + }, clickMaskDismiss: true, backDismiss: true).then((value) { + _disableAndroidSoftKeyboard(); + }); }, ); } @@ -1305,7 +1324,9 @@ TTextMenu? getResolutionMenu(FFI ffi, String id) { children: children, ), ); - }, clickMaskDismiss: true, backDismiss: true); + }, clickMaskDismiss: true, backDismiss: true).then((value) { + _disableAndroidSoftKeyboard(); + }); }, ); } diff --git a/flutter/lib/models/ab_model.dart b/flutter/lib/models/ab_model.dart index 0da84e0f26c8..613ec1ed350d 100644 --- a/flutter/lib/models/ab_model.dart +++ b/flutter/lib/models/ab_model.dart @@ -33,6 +33,8 @@ bool filterAbTagByIntersection() { const _personalAddressBookName = "My address book"; const _legacyAddressBookName = "Legacy address book"; +const kUntagged = "Untagged"; + enum ForcePullAb { listAndCurrent, current, @@ -424,6 +426,7 @@ class AbModel { // #region tags Future addTags(List tagList) async { + tagList.removeWhere((e) => e == kUntagged); final ret = await current.addTags(tagList, {}); await pullNonLegacyAfterChange(); _saveCache(); diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index d029aa3951ff..2c04eae6c87f 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -2859,6 +2859,7 @@ class FFI { canvasModel.scale, ffiModel.pi.currentDisplay); } + imageModel.callbacksOnFirstImage.clear(); await imageModel.update(null); cursorModel.clear(); ffiModel.clear(); diff --git a/src/lang/ar.rs b/src/lang/ar.rs index 039ad4b114ec..1b20ebc4a99a 100644 --- a/src/lang/ar.rs +++ b/src/lang/ar.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/be.rs b/src/lang/be.rs index 26281c26b4aa..7c081983782a 100644 --- a/src/lang/be.rs +++ b/src/lang/be.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/bg.rs b/src/lang/bg.rs index 46126056c9be..3c1d202eeb41 100644 --- a/src/lang/bg.rs +++ b/src/lang/bg.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ca.rs b/src/lang/ca.rs index d680b66a5e87..120200b3520c 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index d15c1b6ba0e1..901b4cdb90ff 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "上传文件"), ("Clipboard is synchronized", "剪贴板已同步"), ("Update client clipboard", "更新客户端的粘贴板"), + ("Untagged", "无标签"), ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index c4ff80c7e3ff..25046cbcb40e 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index 905f31739480..fa3e6f100697 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index ba91471c92d4..482b45bfc79b 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "Dateien hochladen"), ("Clipboard is synchronized", "Zwischenablage ist synchronisiert"), ("Update client clipboard", "Client-Zwischenablage aktualisieren"), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/el.rs b/src/lang/el.rs index 73a306c7c9aa..57984b7288f0 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index 83747f03cd48..5fe2c8d3a65b 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index ee0ffe569942..4b84b1c0f46a 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "Subir archivos"), ("Clipboard is synchronized", "Portapapeles sincronizado"), ("Update client clipboard", "Actualizar portapapeles del cliente"), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/et.rs b/src/lang/et.rs index 9f67c12262d7..931a3da2d3e5 100644 --- a/src/lang/et.rs +++ b/src/lang/et.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/eu.rs b/src/lang/eu.rs index 93f5a60b4ef6..e191a74f09c9 100644 --- a/src/lang/eu.rs +++ b/src/lang/eu.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index 33c6b7427c1a..051859f60eab 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index 8c8332ad1edc..9366c6a19309 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/he.rs b/src/lang/he.rs index 400b5156b40e..39cd98fc4c10 100644 --- a/src/lang/he.rs +++ b/src/lang/he.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/hr.rs b/src/lang/hr.rs index d6389480a04d..d3163ae03c7e 100644 --- a/src/lang/hr.rs +++ b/src/lang/hr.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index fc58fe5a6949..c348db1d1d60 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "Fájlok feltöltése"), ("Clipboard is synchronized", "A vágólap szinkronizálva van"), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index b488f5740d9e..d52c11a384e0 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index b5a191f093ef..5bec55f4f62e 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "File upload"), ("Clipboard is synchronized", "Gli appunti sono sincronizzati"), ("Update client clipboard", "Aggiorna appunti client"), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index 1d0f3b7ea157..14c06e0d59bc 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index f266f2536895..527813d09eba 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "파일 업로드"), ("Clipboard is synchronized", "클립보드가 동기화됨"), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index 46733ce713e5..f9ee96ca2518 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/lt.rs b/src/lang/lt.rs index 723b46a30a81..31522364c1b5 100644 --- a/src/lang/lt.rs +++ b/src/lang/lt.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/lv.rs b/src/lang/lv.rs index 0439a45e65f5..166830c16b4b 100644 --- a/src/lang/lv.rs +++ b/src/lang/lv.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "Augšupielādēt failus"), ("Clipboard is synchronized", "Starpliktuve ir sinhronizēta"), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/nb.rs b/src/lang/nb.rs index c9f3ce243921..00ee513b14c0 100644 --- a/src/lang/nb.rs +++ b/src/lang/nb.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 78c6f77b753a..f1c7ba97f9b1 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "Bestanden uploaden"), ("Clipboard is synchronized", "Klembord is gesynchroniseerd"), ("Update client clipboard", "Klembord van client bijwerken"), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index b6cc5318ab86..872fd5bf713b 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "Wyślij pliki"), ("Clipboard is synchronized", "Schowek jest zsynchronizowany"), ("Update client clipboard", "Uaktualnij schowek klienta"), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 3fe7951870a4..ad3a5f83171a 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index f382b7aba22d..466952c023e0 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 7aaef0e01c4f..830a26a4929a 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index bcc5ed996740..582fdf6dcc6a 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "Загрузить файлы"), ("Clipboard is synchronized", "Буфер обмена синхронизирован"), ("Update client clipboard", "Обновить буфер обмена клиента"), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index 50ba1aeb080a..d6bd0f7111f4 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index 4e52bbe40fcb..3fbf30ba3011 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index abab6acd8936..b68e6a1e03bb 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index 96bf3e1e06da..9def539e59a9 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 69806fa7f6f9..af00b788ed73 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index 1b0cf69e4f25..ce3e99abdee0 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index a657201e993b..09fde8671f81 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index 1b7b783d30f7..b7f9750f1e8b 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index fb9259ef9b67..e99ee8d36461 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "上傳檔案"), ("Clipboard is synchronized", "剪貼簿已同步"), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/uk.rs b/src/lang/uk.rs index ad83430505e6..6b5ec4381887 100644 --- a/src/lang/uk.rs +++ b/src/lang/uk.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", "Надіслати файли"), ("Clipboard is synchronized", "Буфер обміну синхронізовано"), ("Update client clipboard", "Оновити буфер обміну клієнта"), + ("Untagged", ""), ].iter().cloned().collect(); } diff --git a/src/lang/vn.rs b/src/lang/vn.rs index 0d4751cd4f91..1970e17ca9c9 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -654,5 +654,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Upload files", ""), ("Clipboard is synchronized", ""), ("Update client clipboard", ""), + ("Untagged", ""), ].iter().cloned().collect(); }