diff --git a/lib/editors/journal_editor.dart b/lib/editors/journal_editor.dart index 82eeda4c..7f3c6416 100644 --- a/lib/editors/journal_editor.dart +++ b/lib/editors/journal_editor.dart @@ -5,7 +5,10 @@ import 'package:flutter/material.dart'; import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/editors/common.dart'; import 'package:gitjournal/editors/disposable_change_notifier.dart'; +import 'package:gitjournal/editors/heuristics.dart'; import 'package:gitjournal/editors/note_body_editor.dart'; +import 'package:gitjournal/error_reporting.dart'; +import 'package:gitjournal/utils/logger.dart'; import 'package:gitjournal/widgets/editor_scroll_view.dart'; import 'package:gitjournal/widgets/journal_editor_header.dart'; @@ -57,6 +60,8 @@ class JournalEditorState extends State<JournalEditor> TextEditingController _textController = TextEditingController(); bool _noteModified; + EditorHeuristics _heuristics; + JournalEditorState(this.note) { _textController = TextEditingController(text: note.body); } @@ -65,6 +70,7 @@ class JournalEditorState extends State<JournalEditor> void initState() { super.initState(); _noteModified = widget.noteModified; + _heuristics = EditorHeuristics(text: note.body); } @override @@ -121,6 +127,13 @@ class JournalEditorState extends State<JournalEditor> } void _noteTextChanged() { + try { + _applyHeuristics(); + } catch (e, stackTrace) { + Log.e("EditorHeuristics: $e"); + logExceptionWarning(e, stackTrace); + } + if (_noteModified && !widget.editMode) { notifyListeners(); return; @@ -136,6 +149,14 @@ class JournalEditorState extends State<JournalEditor> notifyListeners(); } + void _applyHeuristics() { + var editState = TextEditorState.fromValue(_textController.value); + var es = _heuristics.textChanged(editState); + if (es != null) { + _textController.value = es.toValue(); + } + } + @override Future<void> addImage(File file) async { await getNote().addImage(file); diff --git a/lib/editors/markdown_editor.dart b/lib/editors/markdown_editor.dart index 0872b54c..825aab9c 100644 --- a/lib/editors/markdown_editor.dart +++ b/lib/editors/markdown_editor.dart @@ -188,18 +188,10 @@ class MarkdownEditorState extends State<MarkdownEditor> } void _applyHeuristics() { - var selection = _textController.selection; var editState = TextEditorState.fromValue(_textController.value); - - // vHanda: Why does this happen? - if (selection.baseOffset != selection.extentOffset) { - _heuristics.textChanged(editState); - return; - } - - var r = _heuristics.textChanged(editState); - if (r != null) { - _textController.value = r.toValue(); + var es = _heuristics.textChanged(editState); + if (es != null) { + _textController.value = es.toValue(); } }