From 73c831bf0fd7ba43462ca8183078d0dfab2a5a76 Mon Sep 17 00:00:00 2001 From: otsmr Date: Fri, 6 Jun 2025 10:20:17 +0200 Subject: [PATCH] fix undo --- .../camera/image_editor/layers/emoji_layer.dart | 3 +++ .../views/camera/image_editor/layers/text_layer.dart | 4 ++++ lib/src/views/camera/share_image_editor_view.dart | 12 +++++++++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/src/views/camera/image_editor/layers/emoji_layer.dart b/lib/src/views/camera/image_editor/layers/emoji_layer.dart index 1b4ef13..250d7f0 100755 --- a/lib/src/views/camera/image_editor/layers/emoji_layer.dart +++ b/lib/src/views/camera/image_editor/layers/emoji_layer.dart @@ -68,6 +68,9 @@ class _EmojiLayerState extends State { } if (deleteLayer) { widget.layerData.isDeleted = true; + if (widget.onUpdate != null) { + widget.onUpdate!(); + } } }); }, diff --git a/lib/src/views/camera/image_editor/layers/text_layer.dart b/lib/src/views/camera/image_editor/layers/text_layer.dart index c250fb3..5f3b822 100755 --- a/lib/src/views/camera/image_editor/layers/text_layer.dart +++ b/lib/src/views/camera/image_editor/layers/text_layer.dart @@ -42,6 +42,7 @@ class _TextViewState extends State { MediaQuery.of(context).size.height / 2 - 150 + (widget.layerData.textLayersBefore * 40)); + textController.text = widget.layerData.text; }); }); } @@ -135,6 +136,9 @@ class _TextViewState extends State { textController.text = ""; } elementIsScaled = false; + if (widget.onUpdate != null) { + widget.onUpdate!(); + } setState(() {}); }, onTap: (context diff --git a/lib/src/views/camera/share_image_editor_view.dart b/lib/src/views/camera/share_image_editor_view.dart index 50a8421..9289642 100644 --- a/lib/src/views/camera/share_image_editor_view.dart +++ b/lib/src/views/camera/share_image_editor_view.dart @@ -283,11 +283,13 @@ class _ShareImageEditorView extends State { ActionButton( FontAwesomeIcons.rotateLeft, tooltipText: context.lang.undo, - disable: layers.where((x) => x.isDeleted).length <= 2 && - removedLayers.isEmpty, + disable: layers.where((x) => !x.isDeleted).length <= 2, onPressed: () { if (removedLayers.isNotEmpty) { - layers.add(removedLayers.removeLast()); + var lastLayer = removedLayers.removeLast(); + lastLayer.isDeleted = false; + lastLayer.isEditing = false; + layers.add(lastLayer); setState(() {}); return; } @@ -496,7 +498,11 @@ class _ShareImageEditorView extends State { onUpdate: () { for (final layer in layers) { layer.isEditing = false; + if (layer.isDeleted) { + removedLayers.add(layer); + } } + layers = layers.where((x) => !x.isDeleted).toList(); setState(() {}); }, ),