fix, flutter keyboard grab, connecting peers of older version

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou 2023-02-25 22:59:59 +08:00
parent f71d4e9e81
commit e876adaec5

View File

@ -23,6 +23,10 @@ import '../../common/shared_state.dart';
import './popup_menu.dart';
import './kb_layout_type_chooser.dart';
const _kKeyLegacyMode = 'legacy';
const _kKeyMapMode = 'map';
const _kKeyTranslateMode = 'translate';
class MenubarState {
final kStoreKey = 'remoteMenubarState';
late RxBool show;
@ -1540,9 +1544,10 @@ class _KeyboardMenu extends StatelessWidget {
Widget build(BuildContext context) {
var ffiModel = Provider.of<FfiModel>(context);
if (ffiModel.permissions['keyboard'] == false) return Offstage();
// Do not support peer 1.1.9.
if (stateGlobal.grabKeyboard) {
bind.sessionSetKeyboardMode(id: id, value: 'map');
if (bind.sessionIsKeyboardModeSupported(id: id, mode: _kKeyMapMode)) {
bind.sessionSetKeyboardMode(id: id, value: _kKeyMapMode);
}
return Offstage();
}
return _IconSubmenuButton(
@ -1555,13 +1560,13 @@ class _KeyboardMenu extends StatelessWidget {
mode() {
return futureBuilder(future: () async {
return await bind.sessionGetKeyboardMode(id: id) ?? 'legacy';
return await bind.sessionGetKeyboardMode(id: id) ?? _kKeyLegacyMode;
}(), hasData: (data) {
final groupValue = data as String;
List<KeyboardModeMenu> modes = [
KeyboardModeMenu(key: 'legacy', menu: 'Legacy mode'),
KeyboardModeMenu(key: 'map', menu: 'Map mode'),
KeyboardModeMenu(key: 'translate', menu: 'Translate mode'),
KeyboardModeMenu(key: _kKeyLegacyMode, menu: 'Legacy mode'),
KeyboardModeMenu(key: _kKeyMapMode, menu: 'Map mode'),
KeyboardModeMenu(key: _kKeyTranslateMode, menu: 'Translate mode'),
];
List<_RadioMenuButton> list = [];
onChanged(String? value) async {
@ -1571,13 +1576,13 @@ class _KeyboardMenu extends StatelessWidget {
for (KeyboardModeMenu mode in modes) {
if (bind.sessionIsKeyboardModeSupported(id: id, mode: mode.key)) {
if (mode.key == 'translate') {
if (mode.key == _kKeyTranslateMode) {
if (Platform.isLinux || pi.platform == kPeerPlatformLinux) {
continue;
}
}
var text = translate(mode.menu);
if (mode.key == 'translate') {
if (mode.key == _kKeyTranslateMode) {
text = '$text beta';
}
list.add(_RadioMenuButton<String>(