Fix. Remote toolbar, keyboard mode (#7626)
Move modeOnly to the scope it is needed. Get modeOnly everytime of dropdown menu. Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
2397fdc495
commit
5533ebf86a
@ -1626,19 +1626,7 @@ 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();
|
||||||
// If use flutter to grab keys, we can only use one mode.
|
toolbarToggles() => toolbarKeyboardToggles(ffi)
|
||||||
// Map mode and Legacy mode, at least one of them is supported.
|
|
||||||
String? modeOnly;
|
|
||||||
if (isInputSourceFlutter) {
|
|
||||||
if (bind.sessionIsKeyboardModeSupported(
|
|
||||||
sessionId: ffi.sessionId, mode: kKeyMapMode)) {
|
|
||||||
modeOnly = kKeyMapMode;
|
|
||||||
} else if (bind.sessionIsKeyboardModeSupported(
|
|
||||||
sessionId: ffi.sessionId, mode: kKeyLegacyMode)) {
|
|
||||||
modeOnly = kKeyLegacyMode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
final toolbarToggles = toolbarKeyboardToggles(ffi)
|
|
||||||
.map((e) => CkbMenuButton(
|
.map((e) => CkbMenuButton(
|
||||||
value: e.value, onChanged: e.onChanged, child: e.child, ffi: ffi))
|
value: e.value, onChanged: e.onChanged, child: e.child, ffi: ffi))
|
||||||
.toList();
|
.toList();
|
||||||
@ -1649,17 +1637,17 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
color: _ToolbarTheme.blueColor,
|
color: _ToolbarTheme.blueColor,
|
||||||
hoverColor: _ToolbarTheme.hoverBlueColor,
|
hoverColor: _ToolbarTheme.hoverBlueColor,
|
||||||
menuChildrenGetter: () => [
|
menuChildrenGetter: () => [
|
||||||
keyboardMode(modeOnly),
|
keyboardMode(),
|
||||||
localKeyboardType(),
|
localKeyboardType(),
|
||||||
inputSource(),
|
inputSource(),
|
||||||
Divider(),
|
Divider(),
|
||||||
viewMode(),
|
viewMode(),
|
||||||
Divider(),
|
Divider(),
|
||||||
...toolbarToggles,
|
...toolbarToggles(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
keyboardMode(String? modeOnly) {
|
keyboardMode() {
|
||||||
return futureBuilder(future: () async {
|
return futureBuilder(future: () async {
|
||||||
return await bind.sessionGetKeyboardMode(sessionId: ffi.sessionId) ??
|
return await bind.sessionGetKeyboardMode(sessionId: ffi.sessionId) ??
|
||||||
kKeyLegacyMode;
|
kKeyLegacyMode;
|
||||||
@ -1679,6 +1667,19 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
await ffi.inputModel.updateKeyboardMode();
|
await ffi.inputModel.updateKeyboardMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If use flutter to grab keys, we can only use one mode.
|
||||||
|
// Map mode and Legacy mode, at least one of them is supported.
|
||||||
|
String? modeOnly;
|
||||||
|
if (isInputSourceFlutter) {
|
||||||
|
if (bind.sessionIsKeyboardModeSupported(
|
||||||
|
sessionId: ffi.sessionId, mode: kKeyMapMode)) {
|
||||||
|
modeOnly = kKeyMapMode;
|
||||||
|
} else if (bind.sessionIsKeyboardModeSupported(
|
||||||
|
sessionId: ffi.sessionId, mode: kKeyLegacyMode)) {
|
||||||
|
modeOnly = kKeyLegacyMode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (InputModeMenu mode in modes) {
|
for (InputModeMenu mode in modes) {
|
||||||
if (modeOnly != null && mode.key != modeOnly) {
|
if (modeOnly != null && mode.key != modeOnly) {
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user