Skip to content

Commit 61d29d1

Browse files
committed
Fix moving collection elements to layers, fixes #1176
1 parent f00bb9d commit 61d29d1

3 files changed

Lines changed: 94 additions & 1 deletion

File tree

app/lib/dialogs/collections.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ class _CollectionsDialogState extends State<CollectionsDialog> {
163163
.map((e) => e.id)
164164
.nonNulls
165165
.toList();
166-
showDialog<void>(
166+
await showDialog<void>(
167167
builder: (context) => BlocProvider.value(
168168
value: bloc,
169169
child: MoveToLayerDialog(elementIds: elementIds),
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
import 'package:archive/archive.dart';
2+
import 'package:butterfly/api/file_system.dart';
3+
import 'package:butterfly/bloc/document_bloc.dart';
4+
import 'package:butterfly/cubits/editor_controller.dart';
5+
import 'package:butterfly/cubits/settings.dart';
6+
import 'package:butterfly/cubits/transform.dart';
7+
import 'package:butterfly/dialogs/collections.dart';
8+
import 'package:butterfly/dialogs/layers.dart';
9+
import 'package:butterfly/models/viewport.dart';
10+
import 'package:butterfly/src/generated/i18n/app_localizations.dart';
11+
import 'package:butterfly_api/butterfly_api.dart';
12+
import 'package:flutter/material.dart';
13+
import 'package:flutter_bloc/flutter_bloc.dart';
14+
import 'package:flutter_test/flutter_test.dart';
15+
import 'package:lw_file_system/lw_file_system.dart';
16+
import 'package:material_leap/material_leap.dart';
17+
import 'package:mocktail/mocktail.dart';
18+
19+
import '../helpers/mocks.dart';
20+
21+
void main() {
22+
TestWidgetsFlutterBinding.ensureInitialized();
23+
24+
testWidgets('move to layer keeps the layer picker open', (tester) async {
25+
final fileSystem = MockButterflyFileSystem();
26+
final settingsCubit = fileSystem.settingsCubit as MockSettingsCubit;
27+
when(
28+
() => settingsCubit.state,
29+
).thenReturn(const ButterflySettings(autosave: false));
30+
when(() => settingsCubit.stream).thenAnswer((_) => const Stream.empty());
31+
32+
final editorController = EditorController(
33+
settingsCubit,
34+
TransformCubit(1),
35+
CameraViewport.unbaked(),
36+
);
37+
final windowCubit = WindowCubit(fullScreen: false);
38+
final element = PenElement(id: 'element', collection: 'collection');
39+
final page = DocumentPage(
40+
layers: [
41+
DocumentLayer(id: 'bottom', name: 'Bottom'),
42+
DocumentLayer(id: 'top', name: 'Top', content: [element]),
43+
],
44+
);
45+
final (data, pageName) = NoteData(Archive()).setPage(page, 'Page');
46+
final bloc = DocumentBloc(
47+
fileSystem,
48+
editorController,
49+
windowCubit,
50+
data,
51+
const AssetLocation(path: 'regression-test.bfly'),
52+
null,
53+
page,
54+
pageName,
55+
);
56+
addTearDown(() async {
57+
await bloc.close();
58+
await editorController.close();
59+
await windowCubit.close();
60+
});
61+
62+
await tester.pumpWidget(
63+
RepositoryProvider<ButterflyFileSystem>.value(
64+
value: fileSystem,
65+
child: BlocProvider.value(
66+
value: bloc,
67+
child: MaterialApp(
68+
locale: const Locale('en'),
69+
localizationsDelegates: const [
70+
...AppLocalizations.localizationsDelegates,
71+
LeapLocalizations.delegate,
72+
],
73+
supportedLocales: AppLocalizations.supportedLocales,
74+
home: const Scaffold(body: CollectionsDialog()),
75+
),
76+
),
77+
),
78+
);
79+
bloc.add(const CurrentCollectionChanged('collection'));
80+
await tester.pumpAndSettle();
81+
82+
await tester.tap(find.byTooltip('Move to layer'));
83+
await tester.pumpAndSettle();
84+
85+
expect(find.byType(MoveToLayerDialog), findsOneWidget);
86+
await tester.tap(find.text('Bottom'));
87+
await tester.pumpAndSettle();
88+
89+
final state = bloc.state as DocumentLoadSuccess;
90+
expect(state.page.getLayer('bottom').content.single.id, 'element');
91+
});
92+
}

metadata/en-US/changelogs/190.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@
1111
* Fix filename preview appearing when renaming existing documents
1212
* Fix navigation menus broken on mobile layout ([#1177](https://github.com/LinwoodDev/Butterfly/issues/1177))
1313
* Fix creating packs from the selection menu ([#1178](https://github.com/LinwoodDev/Butterfly/issues/1178))
14+
* Fix moving collection elements to layers ([#1176](https://github.com/LinwoodDev/Butterfly/issues/1176))
1415

1516
Read more here: https://linwood.dev/butterfly/2.6.0-beta.3

0 commit comments

Comments
 (0)