flutter_desktop: update custom cursor lib & menubar margin & better callback for pinning menubar

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou
2022-09-13 19:10:55 -07:00
parent f4bc27f969
commit c5a78ce107
4 changed files with 54 additions and 27 deletions

View File

@@ -18,6 +18,8 @@ import '../../models/model.dart';
import '../../models/platform_model.dart';
import '../../common/shared_state.dart';
bool _isCustomCursorInited = false;
class RemotePage extends StatefulWidget {
const RemotePage({
Key? key,
@@ -45,7 +47,7 @@ class _RemotePageState extends State<RemotePage>
var _isPhysicalMouse = false;
var _imageFocused = false;
final _onEnterOrLeaveImage = <Function(bool)>[];
Function(bool)? _onEnterOrLeaveImage4Menubar;
late FFI _ffi;
@@ -95,6 +97,14 @@ class _RemotePageState extends State<RemotePage>
_ffi.qualityMonitorModel.checkShowQualityMonitor(widget.id);
_showRemoteCursor.value = bind.sessionGetToggleOptionSync(
id: widget.id, arg: 'show-remote-cursor');
if (!_isCustomCursorInited) {
customCursorController.registerNeedUpdateCursorCallback(
(String? lastKey, String? currentKey) async {
return lastKey == null || lastKey != currentKey;
});
_isCustomCursorInited = true;
}
}
@override
@@ -327,16 +337,24 @@ class _RemotePageState extends State<RemotePage>
_rawKeyFocusNode.requestFocus();
}
_cursorOverImage.value = true;
for (var f in _onEnterOrLeaveImage) {
f(true);
if (_onEnterOrLeaveImage4Menubar != null) {
try {
_onEnterOrLeaveImage4Menubar!(true);
} catch (e) {
//
}
}
_ffi.enterOrLeave(true);
}
void leaveView(PointerExitEvent evt) {
_cursorOverImage.value = false;
for (var f in _onEnterOrLeaveImage) {
f(false);
if (_onEnterOrLeaveImage4Menubar != null) {
try {
_onEnterOrLeaveImage4Menubar!(false);
} catch (e) {
//
}
}
_ffi.enterOrLeave(false);
}
@@ -381,7 +399,8 @@ class _RemotePageState extends State<RemotePage>
paints.add(RemoteMenubar(
id: widget.id,
ffi: _ffi,
onEnterOrLeaveImage: _onEnterOrLeaveImage,
onEnterOrLeaveImageSetter: (func) => _onEnterOrLeaveImage4Menubar = func,
onEnterOrLeaveImageCleaner: () => _onEnterOrLeaveImage4Menubar = null,
));
return Stack(
children: paints,

View File

@@ -98,7 +98,7 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
controller: tabController,
showTabBar: fullscreen.isFalse,
onWindowCloseButton: handleWindowCloseButton,
tail: AddButton().paddingOnly(left: 10),
tail: const AddButton().paddingOnly(left: 10),
pageViewBuilder: (pageView) {
WindowController.fromWindowId(windowId())
.setFullscreen(fullscreen.isTrue);