File indexing completed on 2024-05-12 15:58:25
0001 /* 0002 * SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "kis_legacy_undo_adapter.h" 0008 0009 #include "kis_image.h" 0010 0011 0012 KisLegacyUndoAdapter::KisLegacyUndoAdapter(KisUndoStore *undoStore, 0013 KisImageWSP image) 0014 : KisUndoAdapter(undoStore, image.data()), 0015 m_image(image), 0016 m_macroCounter(0) 0017 { 0018 } 0019 0020 const KUndo2Command* KisLegacyUndoAdapter::presentCommand() 0021 { 0022 return undoStore()->presentCommand(); 0023 } 0024 0025 void KisLegacyUndoAdapter::undoLastCommand() 0026 { 0027 undoStore()->undoLastCommand(); 0028 } 0029 0030 void KisLegacyUndoAdapter::addCommand(KUndo2Command *command) 0031 { 0032 if(!command) return; 0033 0034 if(m_macroCounter) { 0035 undoStore()->addCommand(command); 0036 } 0037 else { 0038 m_image->barrierLock(); 0039 undoStore()->addCommand(command); 0040 m_image->unlock(); 0041 } 0042 } 0043 0044 void KisLegacyUndoAdapter::beginMacro(const KUndo2MagicString& macroName) 0045 { 0046 if(!m_macroCounter) { 0047 m_image->barrierLock(); 0048 } 0049 0050 m_macroCounter++; 0051 undoStore()->beginMacro(macroName); 0052 } 0053 0054 void KisLegacyUndoAdapter::endMacro() 0055 { 0056 m_macroCounter--; 0057 0058 if(!m_macroCounter) { 0059 m_image->unlock(); 0060 } 0061 undoStore()->endMacro(); 0062 } 0063