Summary: | Ctrl+Z / Undo doesn't work on big brush strokes | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | David REVOY <info> |
Component: | Instant Preview | Assignee: | Krita Bugs <krita-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | halla |
Priority: | NOR | ||
Version: | git master (please specify the git hash!) | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/krita/1426e045e9cdd653b0ca3c6cbe29703ee57b2c81 | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: | [ ^ short 50sec video of the bug ] |
As discussed yesterday, undo will work, but only after the stroke is calculated. I still think that undo should abort the strokes and lod calculations and undo, but that might be really hard to implement. Git commit 1426e045e9cdd653b0ca3c6cbe29703ee57b2c81 by Dmitry Kazakov. Committed on 21/10/2016 at 11:42. Pushed by dkazakov into branch 'kazakov/undo-with-instant-preview-T2544'. Implemented Undo for Instant Preview strokes Now the user can cancel a stroke without waiting until the main full-resolution stroke finishes its execution. Just press Ctrl+Z and the your preview will be (partially) reverted and the corresponding background stroke will be cancelled. Technically it is implemented by introducing the second undo store inside the strokes queue and syncing it with the running strokes with a set of complicated rules. If the stroke can be cancelled, it is cancelled, if the stroke has already completed its execution, it is just undone. Ref T2544 M +9 -1 libs/image/kis_image.cc M +11 -0 libs/image/kis_image.h M +4 -0 libs/image/kis_image_interfaces.cpp M +8 -0 libs/image/kis_image_interfaces.h M +1 -2 libs/image/kis_processing_applicator.cpp M +6 -0 libs/image/kis_stroke.cpp M +2 -0 libs/image/kis_stroke.h M +10 -10 libs/image/kis_stroke_strategy_undo_command_based.cpp M +4 -5 libs/image/kis_stroke_strategy_undo_command_based.h M +183 -4 libs/image/kis_strokes_queue.cpp M +11 -0 libs/image/kis_strokes_queue.h C +9 -11 libs/image/kis_strokes_queue_undo_result.h [from: libs/image/kis_image_interfaces.cpp - 075% similarity] M +5 -0 libs/image/kis_undo_stores.cpp M +2 -0 libs/image/kis_undo_stores.h M +10 -0 libs/image/kis_update_scheduler.cpp M +7 -0 libs/image/kis_update_scheduler.h M +1 -1 libs/image/tests/kis_stroke_strategy_undo_command_based_test.cpp M +189 -14 libs/image/tests/kis_strokes_queue_test.cpp M +5 -0 libs/image/tests/kis_strokes_queue_test.h M +11 -3 libs/image/tests/scheduler_utils.h M +5 -0 libs/ui/KisDocument.cpp M +1 -1 libs/ui/actions/kis_selection_action_factories.cpp M +0 -3 libs/ui/kis_filter_manager.cc M +0 -1 libs/ui/tests/fill_processing_visitor_test.cpp M +0 -1 libs/ui/tool/kis_figure_painting_tool_helper.cpp M +2 -4 libs/ui/tool/kis_resources_snapshot.cpp M +1 -1 libs/ui/tool/kis_resources_snapshot.h M +1 -1 libs/ui/tool/kis_tool.cc M +1 -2 libs/ui/tool/kis_tool_freehand.cc M +0 -4 libs/ui/tool/kis_tool_freehand_helper.cpp M +0 -2 libs/ui/tool/kis_tool_freehand_helper.h M +0 -1 libs/ui/tool/strokes/freehand_stroke.cpp M +0 -1 libs/ui/tool/strokes/kis_filter_stroke_strategy.cpp M +0 -19 libs/ui/tool/strokes/kis_painter_based_stroke_strategy.cpp M +0 -1 libs/ui/tool/strokes/kis_painter_based_stroke_strategy.h M +0 -1 libs/ui/widgets/kis_scratch_pad.cpp M +0 -1 plugins/paintops/defaultpaintops/brush/tests/kis_brushop_test.cpp M +1 -1 plugins/tools/basictools/kis_tool_fill.cc M +1 -1 plugins/tools/basictools/kis_tool_gradient.cc M +1 -2 plugins/tools/basictools/kis_tool_line.cc M +2 -3 plugins/tools/basictools/kis_tool_line_helper.cpp M +1 -2 plugins/tools/basictools/kis_tool_line_helper.h M +3 -4 plugins/tools/basictools/kis_tool_move.cc M +16 -32 plugins/tools/basictools/strokes/move_selection_stroke_strategy.cpp M +2 -4 plugins/tools/basictools/strokes/move_selection_stroke_strategy.h M +12 -22 plugins/tools/basictools/strokes/move_stroke_strategy.cpp M +2 -3 plugins/tools/basictools/strokes/move_stroke_strategy.h M +3 -4 plugins/tools/basictools/tests/move_selection_stroke_test.cpp M +1 -1 plugins/tools/basictools/tests/move_stroke_test.cpp M +1 -1 plugins/tools/tool_crop/kis_tool_crop.cc M +3 -3 plugins/tools/tool_transform2/kis_tool_transform.cc M +2 -2 plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp M +1 -1 plugins/tools/tool_transform2/strokes/transform_stroke_strategy.h M +0 -1 sdk/tests/stroke_testing_utils.cpp http://commits.kde.org/krita/1426e045e9cdd653b0ca3c6cbe29703ee57b2c81 |
Created attachment 99088 [details] [ ^ short 50sec video of the bug ] Hi, in the video in attachement I do the demonstration how big brush strokes are not affected by 'undo' or brush history. The video show how the first three big strokes can't be 'undone' while the fourth ( a little one ) can.