fix: bug where context menu options wouldn't work unless page was selcted

This commit is contained in:
Aryman 2022-08-10 14:46:39 +05:30
parent ab4a2e8b07
commit e095a17683
2 changed files with 13 additions and 1 deletions

View File

@ -64,13 +64,17 @@ class ViewDisclosureButton extends StatelessWidget
class ViewDisclosureRegion extends StatelessWidget class ViewDisclosureRegion extends StatelessWidget
with ActionList<ViewDisclosureActionWrapper>, FlowyOverlayDelegate { with ActionList<ViewDisclosureActionWrapper>, FlowyOverlayDelegate {
final Widget child; final Widget child;
final Function() onTap;
final Function(dartz.Option<ViewDisclosureAction>) onSelected; final Function(dartz.Option<ViewDisclosureAction>) onSelected;
final _items = ViewDisclosureAction.values final _items = ViewDisclosureAction.values
.map((action) => ViewDisclosureActionWrapper(action)) .map((action) => ViewDisclosureActionWrapper(action))
.toList(); .toList();
ViewDisclosureRegion( ViewDisclosureRegion(
{Key? key, required this.onSelected, required this.child}) {Key? key,
required this.onSelected,
required this.onTap,
required this.child})
: super(key: key); : super(key: key);
@override @override
@ -96,6 +100,11 @@ class ViewDisclosureRegion extends StatelessWidget
); );
}; };
@override
void didRemove() {
onSelected(dartz.none());
}
void _handleClick(PointerDownEvent event, BuildContext context) { void _handleClick(PointerDownEvent event, BuildContext context) {
if (event.kind == PointerDeviceKind.mouse && if (event.kind == PointerDeviceKind.mouse &&
event.buttons == kSecondaryMouseButton) { event.buttons == kSecondaryMouseButton) {
@ -103,6 +112,7 @@ class ViewDisclosureRegion extends StatelessWidget
Offset position = box.localToGlobal(Offset.zero); Offset position = box.localToGlobal(Offset.zero);
double x = event.position.dx - position.dx - box.size.width; double x = event.position.dx - position.dx - box.size.width;
double y = event.position.dy - position.dy - box.size.height; double y = event.position.dy - position.dy - box.size.height;
onTap();
show(context, anchorOffset: Offset(x, y)); show(context, anchorOffset: Offset(x, y));
} }
} }

View File

@ -86,6 +86,8 @@ class ViewSectionItem extends StatelessWidget {
} }
return ViewDisclosureRegion( return ViewDisclosureRegion(
onTap: () =>
context.read<ViewBloc>().add(const ViewEvent.setIsEditing(true)),
onSelected: (action) { onSelected: (action) {
context.read<ViewBloc>().add(const ViewEvent.setIsEditing(false)); context.read<ViewBloc>().add(const ViewEvent.setIsEditing(false));
_handleAction(context, action); _handleAction(context, action);