specify keyboard mode only
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
c845ddf510
commit
efaf63c57c
@ -1638,12 +1638,15 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var ffiModel = Provider.of<FfiModel>(context);
|
var ffiModel = Provider.of<FfiModel>(context);
|
||||||
if (!ffiModel.keyboard) return Offstage();
|
if (!ffiModel.keyboard) return Offstage();
|
||||||
|
String? modeOnly;
|
||||||
if (stateGlobal.grabKeyboard) {
|
if (stateGlobal.grabKeyboard) {
|
||||||
if (bind.sessionIsKeyboardModeSupported(id: id, mode: _kKeyMapMode)) {
|
if (bind.sessionIsKeyboardModeSupported(id: id, mode: _kKeyMapMode)) {
|
||||||
bind.sessionSetKeyboardMode(id: id, value: _kKeyMapMode);
|
bind.sessionSetKeyboardMode(id: id, value: _kKeyMapMode);
|
||||||
|
modeOnly = _kKeyMapMode;
|
||||||
} else if (bind.sessionIsKeyboardModeSupported(
|
} else if (bind.sessionIsKeyboardModeSupported(
|
||||||
id: id, mode: _kKeyLegacyMode)) {
|
id: id, mode: _kKeyLegacyMode)) {
|
||||||
bind.sessionSetKeyboardMode(id: id, value: _kKeyLegacyMode);
|
bind.sessionSetKeyboardMode(id: id, value: _kKeyLegacyMode);
|
||||||
|
modeOnly = _kKeyLegacyMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return _IconSubmenuButton(
|
return _IconSubmenuButton(
|
||||||
@ -1653,14 +1656,14 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
color: _MenubarTheme.blueColor,
|
color: _MenubarTheme.blueColor,
|
||||||
hoverColor: _MenubarTheme.hoverBlueColor,
|
hoverColor: _MenubarTheme.hoverBlueColor,
|
||||||
menuChildren: [
|
menuChildren: [
|
||||||
mode(),
|
mode(modeOnly),
|
||||||
localKeyboardType(),
|
localKeyboardType(),
|
||||||
Divider(),
|
Divider(),
|
||||||
view_mode(),
|
view_mode(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
mode() {
|
mode(String? modeOnly) {
|
||||||
return futureBuilder(future: () async {
|
return futureBuilder(future: () async {
|
||||||
return await bind.sessionGetKeyboardMode(id: id) ?? _kKeyLegacyMode;
|
return await bind.sessionGetKeyboardMode(id: id) ?? _kKeyLegacyMode;
|
||||||
}(), hasData: (data) {
|
}(), hasData: (data) {
|
||||||
@ -1678,10 +1681,17 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (KeyboardModeMenu mode in modes) {
|
for (KeyboardModeMenu mode in modes) {
|
||||||
if (bind.sessionIsKeyboardModeSupported(id: id, mode: mode.key)) {
|
if (modeOnly != null && mode.key != modeOnly) {
|
||||||
|
continue;
|
||||||
|
} else if (!bind.sessionIsKeyboardModeSupported(
|
||||||
|
id: id, mode: mode.key)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (pi.is_wayland && mode.key != _kKeyMapMode) {
|
if (pi.is_wayland && mode.key != _kKeyMapMode) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var text = translate(mode.menu);
|
var text = translate(mode.menu);
|
||||||
if (mode.key == _kKeyTranslateMode) {
|
if (mode.key == _kKeyTranslateMode) {
|
||||||
text = '$text beta';
|
text = '$text beta';
|
||||||
@ -1694,7 +1704,6 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
ffi: ffi,
|
ffi: ffi,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return Column(children: list);
|
return Column(children: list);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user