371 {
375
378
379 if (!
parent->isEditable(
false))
return;
380
383
386
387 if (prevNode) {
390
392 newParent = prevNode;
393 } else {
396 }
397 }
else if ((nodesType ==
AllLayers && grandParent) ||
398 (nodesType ==
AllMasks && grandParent && grandParent->
parent())) {
399 newAbove =
parent->prevSibling();
400 newParent = grandParent;
401
403 grandParent && !grandParent->
parent() &&
404 (prevNode =
parent->prevSibling()) &&
405 prevNode->inherits("KisLayer")) {
406
408 newParent = prevNode;
409 }
410 } else {
412
413 if (nextNode) {
416 newAbove = 0;
417 newParent = nextNode;
418 } else {
419 newAbove = nextNode;
421 }
422 }
else if ((nodesType ==
AllLayers && grandParent) ||
423 (nodesType ==
AllMasks && grandParent && grandParent->
parent())) {
425 newParent = grandParent;
426
428 grandParent && !grandParent->
parent() &&
429 (nextNode =
parent->nextSibling()) &&
430 nextNode->inherits("KisLayer")) {
431
432 newAbove = 0;
433 newParent = nextNode;
434 }
435 }
436
437 if (!newParent ||
439
443
445 Q_FOREACH (
KisNodeSP node, sortedNodes) {
447 continue;
448 }
449
453 currentAbove = node;
454 }
455
459 }
The command for layer moves inside the layer stack.
QSharedPointer< T > toQShared(T *ptr)
KisNodeList sortAndFilterAnyMergeableNodesSafe(const KisNodeList &nodes, KisImageSP image)
bool isEditable(bool checkVisibility=true) const
void addCommand(KUndo2Command *cmd)
KisNodeSP prevSibling() const
KisNodeSP lastChild() const
KisNodeSP nextSibling() const
virtual bool allowAsChild(KisNodeSP) const =0
bool allowsAsChildren(KisNodeSP parent, KisNodeList nodes)
NodesType getNodesType(KisNodeList nodes)