diff --git a/lib/app.dart b/lib/app.dart index 7d2b80f3..89f4c562 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -390,8 +390,10 @@ class _JournalAppState extends State { }); } + var folder = getFolderForEditor(settings, rootFolder, et); return NoteEditor.newNote( - getFolderForEditor(settings, rootFolder, et), + folder, + folder, et, existingText: sharedText, existingImages: sharedImages, diff --git a/lib/editors/markdown_editor.dart b/lib/editors/markdown_editor.dart index e777fb0c..dcd6545e 100644 --- a/lib/editors/markdown_editor.dart +++ b/lib/editors/markdown_editor.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:gitjournal/core/note.dart'; +import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/editors/common.dart'; import 'package:gitjournal/editors/disposable_change_notifier.dart'; import 'package:gitjournal/editors/heuristics.dart'; @@ -19,6 +20,7 @@ import 'package:gitjournal/widgets/note_viewer.dart'; class MarkdownEditor extends StatefulWidget implements Editor { final Note note; + final NotesFolder parentFolder; final bool noteModified; @override @@ -41,6 +43,7 @@ class MarkdownEditor extends StatefulWidget implements Editor { MarkdownEditor({ Key key, @required this.note, + @required this.parentFolder, @required this.noteModified, @required this.noteDeletionSelected, @required this.noteEditorChooserSelected, @@ -130,7 +133,12 @@ class MarkdownEditorState extends State ), ); - Widget body = editingMode ? editor : NoteViewer(note: note); + Widget body = editingMode + ? editor + : NoteViewer( + note: note, + parentFolder: widget.parentFolder, + ); var settings = Provider.of(context); if (settings.experimentalMarkdownToolbar && editingMode) { diff --git a/lib/folder_views/common.dart b/lib/folder_views/common.dart index ed541e7e..23f33437 100644 --- a/lib/folder_views/common.dart +++ b/lib/folder_views/common.dart @@ -68,9 +68,13 @@ Widget buildFolderView({ return Container(); } -void openNoteEditor(BuildContext context, Note note) async { +void openNoteEditor( + BuildContext context, + Note note, + NotesFolder parentFolder, +) async { var route = MaterialPageRoute( - builder: (context) => NoteEditor.fromNote(note), + builder: (context) => NoteEditor.fromNote(note, parentFolder), settings: const RouteSettings(name: '/note/'), ); var showUndoSnackBar = await Navigator.of(context).push(route); diff --git a/lib/screens/folder_view.dart b/lib/screens/folder_view.dart index 12227d5a..d6adc420 100644 --- a/lib/screens/folder_view.dart +++ b/lib/screens/folder_view.dart @@ -90,7 +90,7 @@ class _FolderViewState extends State { showSummary: _showSummary, noteTapped: (Note note) { if (!inSelectionMode) { - openNoteEditor(context, note); + openNoteEditor(context, note, widget.notesFolder); } else { setState(() { inSelectionMode = false; @@ -189,6 +189,7 @@ class _FolderViewState extends State { var route = MaterialPageRoute( builder: (context) => NoteEditor.newNote( fsFolder, + widget.notesFolder, editorType, newNoteExtraProps: extraProps, ), diff --git a/lib/screens/note_editor.dart b/lib/screens/note_editor.dart index 52051722..45d3a9c3 100644 --- a/lib/screens/note_editor.dart +++ b/lib/screens/note_editor.dart @@ -9,6 +9,7 @@ import 'package:provider/provider.dart'; import 'package:gitjournal/core/md_yaml_doc.dart'; import 'package:gitjournal/core/note.dart'; +import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/editors/checklist_editor.dart'; import 'package:gitjournal/editors/journal_editor.dart'; @@ -28,6 +29,7 @@ class ShowUndoSnackbar {} class NoteEditor extends StatefulWidget { final Note note; final NotesFolderFS notesFolder; + final NotesFolder parentFolderView; final EditorType defaultEditorType; final String existingText; @@ -35,7 +37,7 @@ class NoteEditor extends StatefulWidget { final Map newNoteExtraProps; - NoteEditor.fromNote(this.note) + NoteEditor.fromNote(this.note, this.parentFolderView) : notesFolder = note.parent, defaultEditorType = null, existingText = null, @@ -44,6 +46,7 @@ class NoteEditor extends StatefulWidget { NoteEditor.newNote( this.notesFolder, + this.parentFolderView, this.defaultEditorType, { this.existingText, this.existingImages, @@ -151,6 +154,7 @@ class NoteEditorState extends State { return MarkdownEditor( key: _markdownEditorKey, note: note, + parentFolder: widget.parentFolderView, noteModified: _noteModified(note), noteDeletionSelected: _noteDeletionSelected, noteEditorChooserSelected: _noteEditorChooserSelected, diff --git a/lib/widgets/note_search_delegate.dart b/lib/widgets/note_search_delegate.dart index 5761f699..d1a1a28a 100644 --- a/lib/widgets/note_search_delegate.dart +++ b/lib/widgets/note_search_delegate.dart @@ -83,7 +83,7 @@ class NoteSearchDelegate extends SearchDelegate { emptyText: emptyText, header: StandardViewHeader.TitleOrFileName, showSummary: true, - noteTapped: (Note note) => openNoteEditor(context, note), + noteTapped: (Note note) => openNoteEditor(context, note, folder), noteLongPressed: (Note note) {}, ); } diff --git a/lib/widgets/note_viewer.dart b/lib/widgets/note_viewer.dart index 4d1d4206..59447eca 100644 --- a/lib/widgets/note_viewer.dart +++ b/lib/widgets/note_viewer.dart @@ -12,6 +12,7 @@ import 'package:url_launcher/url_launcher.dart'; import 'package:gitjournal/core/link.dart'; import 'package:gitjournal/core/note.dart'; +import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/folder_views/common.dart'; import 'package:gitjournal/settings.dart'; @@ -23,7 +24,12 @@ import 'package:gitjournal/widgets/notes_backlinks.dart'; class NoteViewer extends StatelessWidget { final Note note; - const NoteViewer({Key key, @required this.note}) : super(key: key); + final NotesFolder parentFolder; + const NoteViewer({ + Key key, + @required this.note, + @required this.parentFolder, + }) : super(key: key); @override Widget build(BuildContext context) { @@ -72,7 +78,7 @@ class NoteViewer extends StatelessWidget { var linkedNote = linkResolver.resolve(link); if (linkedNote != null) { - openNoteEditor(context, linkedNote); + openNoteEditor(context, linkedNote, parentFolder); return; } @@ -91,7 +97,11 @@ class NoteViewer extends StatelessWidget { ), const SizedBox(height: 16.0), if (settings.experimentalBacklinks) - NoteBacklinkRenderer(note: note, rootFolder: rootFolder), + NoteBacklinkRenderer( + note: note, + rootFolder: rootFolder, + parentFolder: parentFolder, + ), // _buildFooter(context), ], crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/widgets/notes_backlinks.dart b/lib/widgets/notes_backlinks.dart index a16a6e86..d9fabd03 100644 --- a/lib/widgets/notes_backlinks.dart +++ b/lib/widgets/notes_backlinks.dart @@ -5,6 +5,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:gitjournal/core/link.dart'; import 'package:gitjournal/core/note.dart'; +import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/features.dart'; import 'package:gitjournal/folder_views/common.dart'; @@ -14,10 +15,12 @@ import 'package:gitjournal/widgets/pro_overlay.dart'; class NoteBacklinkRenderer extends StatefulWidget { final Note note; final NotesFolderFS rootFolder; + final NotesFolder parentFolder; NoteBacklinkRenderer({ @required this.note, @required this.rootFolder, + @required this.parentFolder, }); @override @@ -88,7 +91,7 @@ class _NoteBacklinkRendererState extends State { note: note, parentNote: widget.note, onTap: () { - openNoteEditor(context, note); + openNoteEditor(context, note, widget.parentFolder); }, ), ], @@ -137,9 +140,7 @@ class NoteSnippet extends StatelessWidget { return Padding( padding: const EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 8.0), child: GestureDetector( - onTap: () { - openNoteEditor(context, note); - }, + onTap: onTap, child: Container( color: theme.scaffoldBackgroundColor, width: MediaQuery.of(context).size.width,