fix, enable menu before image
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
535405521c
commit
dade589075
@ -228,49 +228,61 @@ class _RemotePageState extends State<RemotePage>
|
|||||||
removeSharedStates(widget.id);
|
removeSharedStates(widget.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget emptyOverlay() => GestureDetector(
|
||||||
|
behavior: HitTestBehavior.translucent,
|
||||||
|
onTap: () {
|
||||||
|
bind.sessionInputOsPassword(sessionId: sessionId, value: '');
|
||||||
|
},
|
||||||
|
child: BlockableOverlay(
|
||||||
|
state: _blockableOverlayState,
|
||||||
|
underlying: Container(
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
Widget buildBody(BuildContext context) {
|
Widget buildBody(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: Theme.of(context).colorScheme.background,
|
backgroundColor: Theme.of(context).colorScheme.background,
|
||||||
|
|
||||||
/// the Overlay key will be set with _blockableOverlayState in BlockableOverlay
|
/// the Overlay key will be set with _blockableOverlayState in BlockableOverlay
|
||||||
/// see override build() in [BlockableOverlay]
|
/// see override build() in [BlockableOverlay]
|
||||||
body: BlockableOverlay(
|
body: Stack(
|
||||||
state: _blockableOverlayState,
|
children: [
|
||||||
underlying: Container(
|
Container(
|
||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
child: RawKeyFocusScope(
|
child: RawKeyFocusScope(
|
||||||
focusNode: _rawKeyFocusNode,
|
focusNode: _rawKeyFocusNode,
|
||||||
onFocusChange: (bool imageFocused) {
|
onFocusChange: (bool imageFocused) {
|
||||||
debugPrint(
|
debugPrint(
|
||||||
"onFocusChange(window active:${!_isWindowBlur}) $imageFocused");
|
"onFocusChange(window active:${!_isWindowBlur}) $imageFocused");
|
||||||
// See [onWindowBlur].
|
// See [onWindowBlur].
|
||||||
if (Platform.isWindows) {
|
if (Platform.isWindows) {
|
||||||
if (_isWindowBlur) {
|
if (_isWindowBlur) {
|
||||||
imageFocused = false;
|
imageFocused = false;
|
||||||
Future.delayed(Duration.zero, () {
|
Future.delayed(Duration.zero, () {
|
||||||
_rawKeyFocusNode.unfocus();
|
_rawKeyFocusNode.unfocus();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
if (imageFocused) {
|
||||||
|
_ffi.inputModel.enterOrLeave(true);
|
||||||
|
} else {
|
||||||
|
_ffi.inputModel.enterOrLeave(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (imageFocused) {
|
},
|
||||||
_ffi.inputModel.enterOrLeave(true);
|
inputModel: _ffi.inputModel,
|
||||||
} else {
|
child: getBodyForDesktop(context))),
|
||||||
_ffi.inputModel.enterOrLeave(false);
|
emptyOverlay(),
|
||||||
}
|
RemoteToolbar(
|
||||||
}
|
id: widget.id,
|
||||||
},
|
ffi: _ffi,
|
||||||
inputModel: _ffi.inputModel,
|
state: widget.toolbarState,
|
||||||
child: getBodyForDesktop(context))),
|
onEnterOrLeaveImageSetter: (func) =>
|
||||||
upperLayer: [
|
_onEnterOrLeaveImage4Toolbar = func,
|
||||||
OverlayEntry(
|
onEnterOrLeaveImageCleaner: () =>
|
||||||
builder: (context) => RemoteToolbar(
|
_onEnterOrLeaveImage4Toolbar = null,
|
||||||
id: widget.id,
|
),
|
||||||
ffi: _ffi,
|
|
||||||
state: widget.toolbarState,
|
|
||||||
onEnterOrLeaveImageSetter: (func) =>
|
|
||||||
_onEnterOrLeaveImage4Toolbar = func,
|
|
||||||
onEnterOrLeaveImageCleaner: () =>
|
|
||||||
_onEnterOrLeaveImage4Toolbar = null,
|
|
||||||
))
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -2100,6 +2100,9 @@ fn _input_os_password(p: String, activate: bool, interface: impl Interface) {
|
|||||||
activate_os(&interface);
|
activate_os(&interface);
|
||||||
std::thread::sleep(Duration::from_millis(1200));
|
std::thread::sleep(Duration::from_millis(1200));
|
||||||
}
|
}
|
||||||
|
if p.is_empty() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
let mut key_event = KeyEvent::new();
|
let mut key_event = KeyEvent::new();
|
||||||
key_event.press = true;
|
key_event.press = true;
|
||||||
let mut msg_out = Message::new();
|
let mut msg_out = Message::new();
|
||||||
|
@ -25,7 +25,7 @@ use hbb_common::{
|
|||||||
protobuf::Enum,
|
protobuf::Enum,
|
||||||
protobuf::Message as _,
|
protobuf::Message as _,
|
||||||
rendezvous_proto::*,
|
rendezvous_proto::*,
|
||||||
sleep, socket_client,
|
socket_client,
|
||||||
tcp::FramedStream,
|
tcp::FramedStream,
|
||||||
tokio, ResultType,
|
tokio, ResultType,
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user