move_stroke_strategy.cpp (krita-5.1.3.tar.xz) | : | move_stroke_strategy.cpp (krita-5.1.4.tar.xz) | ||
---|---|---|---|---|
skipping to change at line 22 | skipping to change at line 22 | |||
#include "commands_new/kis_update_command.h" | #include "commands_new/kis_update_command.h" | |||
#include "commands_new/kis_node_move_command2.h" | #include "commands_new/kis_node_move_command2.h" | |||
#include "kis_layer_utils.h" | #include "kis_layer_utils.h" | |||
#include "krita_utils.h" | #include "krita_utils.h" | |||
#include "KisRunnableStrokeJobData.h" | #include "KisRunnableStrokeJobData.h" | |||
#include "KisRunnableStrokeJobUtils.h" | #include "KisRunnableStrokeJobUtils.h" | |||
#include "KisRunnableStrokeJobsInterface.h" | #include "KisRunnableStrokeJobsInterface.h" | |||
#include "kis_abstract_projection_plane.h" | #include "kis_abstract_projection_plane.h" | |||
#include "kis_image.h" | #include "kis_image.h" | |||
#include "kis_image_animation_interface.h" | ||||
#include "kis_raster_keyframe_channel.h" | ||||
#include "KisAnimAutoKey.h" | ||||
#include "kis_transform_mask.h" | #include "kis_transform_mask.h" | |||
#include "kis_transform_mask_params_interface.h" | #include "kis_transform_mask_params_interface.h" | |||
#include "kis_keyframe_channel.h" | #include "kis_keyframe_channel.h" | |||
#include "kis_scalar_keyframe_channel.h" | #include "kis_scalar_keyframe_channel.h" | |||
#include "kis_image_animation_interface.h" | #include "kis_image_animation_interface.h" | |||
#include "commands_new/KisSimpleModifyTransformMaskCommand.h" | #include "commands_new/KisSimpleModifyTransformMaskCommand.h" | |||
/* MoveNodeStrategyBase and descendants | /* MoveNodeStrategyBase and descendants | |||
* | * | |||
skipping to change at line 306 | skipping to change at line 309 | |||
std::tie(m_nodes, m_blacklistedNodes) = *m_sharedNodes; | std::tie(m_nodes, m_blacklistedNodes) = *m_sharedNodes; | |||
} | } | |||
if (m_nodes.isEmpty()) { | if (m_nodes.isEmpty()) { | |||
emit sigStrokeStartedEmpty(); | emit sigStrokeStartedEmpty(); | |||
return; | return; | |||
} | } | |||
QVector<KisRunnableStrokeJobData*> jobs; | QVector<KisRunnableStrokeJobData*> jobs; | |||
if (KisAutoKey::activeMode() > KisAutoKey::NONE) { | ||||
KritaUtils::addJobBarrier(jobs, [this]() { | ||||
Q_FOREACH(KisNodeSP node, m_nodes) { | ||||
if (node->hasEditablePaintDevice()) { | ||||
// Try to create a copy keyframe if available. | ||||
KisPaintDeviceSP device = node->paintDevice(); | ||||
KIS_ASSERT(device); | ||||
if (device->keyframeChannel()) { | ||||
KUndo2CommandSP undo(new KUndo2Command); | ||||
const int activeKeyframe = device->keyframeChannel() | ||||
->activeKeyframeTime(); | ||||
const int targetKeyframe = node->image()->animationI | ||||
nterface()->currentTime(); | ||||
device->keyframeChannel()->copyKeyframe(activeKeyfra | ||||
me, targetKeyframe, undo.data()); | ||||
runAndSaveCommand(undo, KisStrokeJobData::BARRIER, K | ||||
isStrokeJobData::NORMAL); | ||||
} | ||||
} | ||||
} | ||||
}); | ||||
} | ||||
KritaUtils::addJobBarrier(jobs, [this]() { | KritaUtils::addJobBarrier(jobs, [this]() { | |||
Q_FOREACH(KisNodeSP node, m_nodes) { | Q_FOREACH(KisNodeSP node, m_nodes) { | |||
KisLayerUtils::forceAllHiddenOriginalsUpdate(node); | KisLayerUtils::forceAllHiddenOriginalsUpdate(node); | |||
} | } | |||
}); | }); | |||
KritaUtils::addJobBarrier(jobs, [this]() { | KritaUtils::addJobBarrier(jobs, [this]() { | |||
Q_FOREACH(KisNodeSP node, m_nodes) { | Q_FOREACH(KisNodeSP node, m_nodes) { | |||
KisLayerUtils::forceAllDelayedNodesUpdate(node); | KisLayerUtils::forceAllDelayedNodesUpdate(node); | |||
} | } | |||
End of changes. 2 change blocks. | ||||
0 lines changed or deleted | 26 lines changed or added |