From dbb5f758ea19e4394ff760638a85310a25bbcafe Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 12 Nov 2020 20:17:56 +0200 Subject: [PATCH] Support preview stack --- lib/redux/app/app_actions.dart | 4 ++ lib/ui/app/entities/entity_list_tile.dart | 46 +++++++++++++---------- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/lib/redux/app/app_actions.dart b/lib/redux/app/app_actions.dart index f0a9be2dd..684ec0b07 100644 --- a/lib/redux/app/app_actions.dart +++ b/lib/redux/app/app_actions.dart @@ -1465,9 +1465,13 @@ void inspectEntity({ bool longPress = false, }) { final store = StoreProvider.of(context); + final state = store.state; + if (isDesktop(context)) { if (longPress) { viewEntity(context: context, entity: entity); + } else if (state.uiState.previewStack.isNotEmpty) { + viewEntity(context: context, entity: entity, addToStack: true); } else { store.dispatch( FilterByEntity(entityType: entity.entityType, entityId: entity.id)); diff --git a/lib/ui/app/entities/entity_list_tile.dart b/lib/ui/app/entities/entity_list_tile.dart index 41e75b84d..5e8ed620a 100644 --- a/lib/ui/app/entities/entity_list_tile.dart +++ b/lib/ui/app/entities/entity_list_tile.dart @@ -78,24 +78,28 @@ class _EntityListTileState extends State { : handleEntityAction(context, widget.entity, action), ); - final trailing = IgnorePointer( - ignoring: !isHovered, - child: IconButton( - icon: Icon(isHovered || isMobile(context) - ? Icons.chevron_right - : Icons.filter_list), - onPressed: () => viewEntity( - entity: widget.entity, - context: context, - addToStack: isDesktop(context) && !widget.isFilter, - ), - color: isFilteredBy - ? (state.prefState.enableDarkMode - ? Colors.white - : Theme.of(context).accentColor) - : null, - ), - ); + final trailing = widget.isFilter + ? SizedBox() + : IgnorePointer( + ignoring: !isHovered, + child: IconButton( + icon: Icon(isHovered || + isMobile(context) || + state.uiState.previewStack.isNotEmpty + ? Icons.chevron_right + : Icons.filter_list), + onPressed: () => viewEntity( + entity: widget.entity, + context: context, + addToStack: isDesktop(context) && !widget.isFilter, + ), + color: isFilteredBy + ? (state.prefState.enableDarkMode + ? Colors.white + : Theme.of(context).accentColor) + : null, + ), + ); return MouseRegion( onEnter: (event) => setState(() => _isHovered = true), @@ -108,8 +112,10 @@ class _EntityListTileState extends State { isMenu: true, child: ListTile( contentPadding: const EdgeInsets.symmetric(horizontal: 16), - onTap: () => - inspectEntity(context: context, entity: widget.entity), + onTap: isDesktop(context) && widget.isFilter + ? null + : () => + inspectEntity(context: context, entity: widget.entity), onLongPress: () => inspectEntity( context: context, entity: widget.entity, longPress: true), title: Text(