mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 15:57:25 +00:00
fix MouseBackDetector
This commit is contained in:
@@ -1,58 +1,19 @@
|
|||||||
part of 'components.dart';
|
part of 'components.dart';
|
||||||
|
|
||||||
class MouseBackRecognizer extends BaseTapGestureRecognizer {
|
|
||||||
GestureTapDownCallback? onTapDown;
|
|
||||||
|
|
||||||
MouseBackRecognizer({
|
|
||||||
super.debugOwner,
|
|
||||||
super.supportedDevices,
|
|
||||||
super.allowedButtonsFilter,
|
|
||||||
});
|
|
||||||
|
|
||||||
@override
|
|
||||||
void handleTapCancel({
|
|
||||||
required PointerDownEvent down,
|
|
||||||
PointerCancelEvent? cancel,
|
|
||||||
required String reason,
|
|
||||||
}) {}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void handleTapDown({required PointerDownEvent down}) {
|
|
||||||
final TapDownDetails details = TapDownDetails(
|
|
||||||
globalPosition: down.position,
|
|
||||||
localPosition: down.localPosition,
|
|
||||||
kind: getKindForPointer(down.pointer),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (down.buttons == kBackMouseButton && onTapDown != null) {
|
|
||||||
invokeCallback<void>('onTapDown', () => onTapDown!(details));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void handleTapUp({
|
|
||||||
required PointerDownEvent down,
|
|
||||||
required PointerUpEvent up,
|
|
||||||
}) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
class MouseBackDetector extends StatelessWidget {
|
class MouseBackDetector extends StatelessWidget {
|
||||||
const MouseBackDetector({super.key, required this.onTapDown, required this.child});
|
const MouseBackDetector({super.key, required this.onTapDown, required this.child});
|
||||||
|
|
||||||
final Widget child;
|
final Widget child;
|
||||||
|
|
||||||
final GestureTapDownCallback onTapDown;
|
final void Function() onTapDown;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return RawGestureDetector(
|
return Listener(
|
||||||
gestures: <Type, GestureRecognizerFactory>{
|
onPointerDown: (event) {
|
||||||
MouseBackRecognizer: GestureRecognizerFactoryWithHandlers<MouseBackRecognizer>(
|
if (event.buttons == kBackMouseButton) {
|
||||||
() => MouseBackRecognizer(),
|
onTapDown();
|
||||||
(MouseBackRecognizer instance) {
|
}
|
||||||
instance.onTapDown = onTapDown;
|
|
||||||
},
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
behavior: HitTestBehavior.translucent,
|
behavior: HitTestBehavior.translucent,
|
||||||
child: child,
|
child: child,
|
||||||
|
@@ -150,9 +150,7 @@ class _MyAppState extends State<MyApp> {
|
|||||||
),
|
),
|
||||||
},
|
},
|
||||||
child: MouseBackDetector(
|
child: MouseBackDetector(
|
||||||
onTapDown: (event) {
|
onTapDown: App.pop,
|
||||||
App.pop();
|
|
||||||
},
|
|
||||||
child: WindowFrame(widget),
|
child: WindowFrame(widget),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user