https://bugs.kde.org/show_bug.cgi?id=497346
Bug ID: 497346
Summary: recursively creating duplicate frames in groups causes
crash.
Classification: Applications
Product: krita
Version: 5.2.6
Platform: Appimage
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: Scripting
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
Created attachment 176540
--> https://bugs.kde.org/attachment.cgi?id=176540&action=edit
This is the script
SUMMARY
Using a custom script to create duplicate frames for all paint layers in a
complicated group layer causes krita to crash. Krita spits out 'ASSERT (krita):
"row >= 0" in file
/builds/graphics/krita/plugins/dockers/animation/KisAnimCurvesChannelsModel.cpp,
line 181' in the terminal, and then quits.
This is the script I am using, and running through the script editor:
from PyQt5.QtWidgets import QDialog, QHBoxLayout, QPushButton, QLineEdit,
QLabel
global isTextDifferent
isTextDifferent=True
application = Krita.instance()
currentDoc = application.activeDocument()
def groupDuplicate():
global isTextDifferent
global currentDoc
global application
if(isTextDifferent):
layers = currentDoc.nodeByName(text.text())
if(text.text()==""):
layers = currentDoc.activeNode()
if(layers == None):
print('layer does not exist!')
return
elif(str(type(layers)) != "<class 'PyKrita.krita.GroupLayer'>"):
print('Not a group layer!')
return
GroupDuplicateLayer(layers.childNodes())
isTextDifferent = False
return
def GroupDuplicateLayer(layers):
for layer in layers:
print(layer)
if(str(type(layer)) == "<class 'PyKrita.krita.Node'>"):
layer.enableAnimation()
global currentDoc
currentDoc.setActiveNode(layer)
Krita.instance().action('add_duplicate_frame').trigger()
else:
GroupDuplicateLayer(layer.childNodes())
def textChanged(x):
global isTextDifferent
isTextDifferent = True
# add button and layout for button
layout = QHBoxLayout()
newButton = QPushButton("Enter")
text = QLineEdit()
label = QLabel("Update which group layer?")
layout.addWidget(label)
layout.addWidget(text)
layout.addWidget(newButton)
newButton.clicked.connect(groupDuplicate)
text.returnPressed.connect(groupDuplicate)
text.textEdited.connect(textChanged)
# create dialog and show it
newDialog = QDialog()
newDialog.setLayout(layout)
newDialog.setWindowTitle("New Dialog Title!")
newDialog.exec_() # show the dialog
STEPS TO REPRODUCE
1. create a new image
2. add several recursive group layers with paint layers inside them
3. run the script above.
OBSERVED RESULT
It crashes.
EXPECTED RESULT
all the child paint layers to have a duplicate frame at the current frame
number.
SOFTWARE/OS VERSIONS
Windows:
macOS:
(available in the Info Center app, or by running `kinfo` in a terminal window)
Linux/KDE Plasma:
KDE Plasma Version:
KDE Frameworks Version:
Qt Version:
ADDITIONAL INFORMATION
I am using the appimage on Arch.
--
You are receiving this mail because:
You are watching all bug changes.