diff --git a/krita/krita.action b/krita/krita.action --- a/krita/krita.action +++ b/krita/krita.action @@ -2096,6 +2096,18 @@ false + + + Activate previously selected layer + + Activate previously selected layer + Activate previously selected layer + 1000 + 0 + ; + false + + groupLayer &Group Layer diff --git a/libs/ui/kis_node_manager.h b/libs/ui/kis_node_manager.h --- a/libs/ui/kis_node_manager.h +++ b/libs/ui/kis_node_manager.h @@ -177,6 +177,7 @@ void mirrorNode(KisNodeSP node, const KUndo2MagicString& commandName, Qt::Orientation orientation); void activateNextNode(); void activatePreviousNode(); + void switchToPreviouslyActiveNode(); /** * move the active node up the nodestack. diff --git a/libs/ui/kis_node_manager.cpp b/libs/ui/kis_node_manager.cpp --- a/libs/ui/kis_node_manager.cpp +++ b/libs/ui/kis_node_manager.cpp @@ -106,6 +106,8 @@ KisNodeList selectedNodes; QPointer nodeJuggler; + KisNodeWSP previouslyActiveNode; + bool activateNodeImpl(KisNodeSP node); QSignalMapper nodeCreationSignalMapper; @@ -144,8 +146,11 @@ imageView->setCurrentNode(0); maskManager.activateMask(0); layerManager.activateLayer(0); + previouslyActiveNode = q->activeNode(); } else { + previouslyActiveNode = q->activeNode(); + KoShape * shape = view->document()->shapeForNode(node); KIS_ASSERT_RECOVER_RETURN_VALUE(shape, false); @@ -247,6 +252,9 @@ action = actionManager->createAction("activatePreviousLayer"); connect(action, SIGNAL(triggered()), this, SLOT(activatePreviousNode())); + action = actionManager->createAction("switchToPreviouslyActiveNode"); + connect(action, SIGNAL(triggered()), this, SLOT(switchToPreviouslyActiveNode())); + action = actionManager->createAction("save_node_as_image"); connect(action, SIGNAL(triggered()), this, SLOT(saveNodeAsImage())); @@ -868,6 +876,13 @@ } } +void KisNodeManager::switchToPreviouslyActiveNode() +{ + if (m_d->previouslyActiveNode && m_d->previouslyActiveNode->parent()) { + slotNonUiActivatedNode(m_d->previouslyActiveNode); + } +} + void KisNodeManager::mergeLayer() { m_d->layerManager.mergeLayer();