feat mouse click and move through monitor widget

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou 2023-01-28 21:11:03 +08:00
parent 2e848061cb
commit d04f047d14
3 changed files with 46 additions and 28 deletions

View File

@ -324,10 +324,8 @@ class QualityMonitor extends StatelessWidget {
Widget build(BuildContext context) => ChangeNotifierProvider.value( Widget build(BuildContext context) => ChangeNotifierProvider.value(
value: qualityMonitorModel, value: qualityMonitorModel,
child: Consumer<QualityMonitorModel>( child: Consumer<QualityMonitorModel>(
builder: (context, qualityMonitorModel, child) => Positioned( builder: (context, qualityMonitorModel, child) =>
top: 10, qualityMonitorModel.show
right: 10,
child: qualityMonitorModel.show
? Container( ? Container(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
color: MyTheme.canvasColor.withAlpha(120), color: MyTheme.canvasColor.withAlpha(120),
@ -357,5 +355,5 @@ class QualityMonitor extends StatelessWidget {
], ],
), ),
) )
: const SizedBox.shrink()))); : const SizedBox.shrink()));
} }

View File

@ -279,23 +279,12 @@ class _RemotePageState extends State<RemotePage>
} }
} }
Widget getBodyForDesktop(BuildContext context) { Widget _buildRawPointerMouseRegion(
var paints = <Widget>[ Widget child,
MouseRegion(onEnter: (evt) { PointerEnterEventListener? onEnter,
bind.hostStopSystemKeyPropagate(stopped: false); PointerExitEventListener? onExit,
}, onExit: (evt) { ) {
bind.hostStopSystemKeyPropagate(stopped: true); return RawPointerMouseRegion(
}, child: LayoutBuilder(builder: (context, constraints) {
Future.delayed(Duration.zero, () {
Provider.of<CanvasModel>(context, listen: false).updateViewStyle();
});
return ImagePaint(
id: widget.id,
zoomCursor: _zoomCursor,
cursorOverImage: _cursorOverImage,
keyboardEnabled: _keyboardEnabled,
remoteCursorMoved: _remoteCursorMoved,
listenerBuilder: (child) => RawPointerMouseRegion(
onEnter: enterView, onEnter: enterView,
onExit: leaveView, onExit: leaveView,
onPointerDown: (event) { onPointerDown: (event) {
@ -315,7 +304,27 @@ class _RemotePageState extends State<RemotePage>
}, },
inputModel: _ffi.inputModel, inputModel: _ffi.inputModel,
child: child, child: child,
), );
}
Widget getBodyForDesktop(BuildContext context) {
var paints = <Widget>[
MouseRegion(onEnter: (evt) {
bind.hostStopSystemKeyPropagate(stopped: false);
}, onExit: (evt) {
bind.hostStopSystemKeyPropagate(stopped: true);
}, child: LayoutBuilder(builder: (context, constraints) {
Future.delayed(Duration.zero, () {
Provider.of<CanvasModel>(context, listen: false).updateViewStyle();
});
return ImagePaint(
id: widget.id,
zoomCursor: _zoomCursor,
cursorOverImage: _cursorOverImage,
keyboardEnabled: _keyboardEnabled,
remoteCursorMoved: _remoteCursorMoved,
listenerBuilder: (child) =>
_buildRawPointerMouseRegion(child, enterView, leaveView),
); );
})) }))
]; ];
@ -328,7 +337,14 @@ class _RemotePageState extends State<RemotePage>
zoomCursor: _zoomCursor, zoomCursor: _zoomCursor,
)))); ))));
} }
paints.add(QualityMonitor(_ffi.qualityMonitorModel)); paints.add(
Positioned(
top: 10,
right: 10,
child: _buildRawPointerMouseRegion(
QualityMonitor(_ffi.qualityMonitorModel), null, null),
),
);
paints.add(RemoteMenubar( paints.add(RemoteMenubar(
id: widget.id, id: widget.id,
ffi: _ffi, ffi: _ffi,

View File

@ -497,7 +497,11 @@ class _RemotePageState extends State<RemotePage> {
child: Stack(children: () { child: Stack(children: () {
final paints = [ final paints = [
ImagePaint(), ImagePaint(),
QualityMonitor(gFFI.qualityMonitorModel), Positioned(
top: 10,
right: 10,
child: QualityMonitor(gFFI.qualityMonitorModel),
),
getHelpTools(), getHelpTools(),
SizedBox( SizedBox(
width: 0, width: 0,