Просмотр исходного кода

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

Aryman 2 лет назад
Родитель
Сommit
e095a17683

+ 11 - 1
frontend/app_flowy/lib/workspace/presentation/home/menu/app/section/disclosure_action.dart

@@ -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));
     }
     }
   }
   }

+ 2 - 0
frontend/app_flowy/lib/workspace/presentation/home/menu/app/section/item.dart

@@ -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);