Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSelectLayerAction::Private Class Reference

Public Member Functions

 Private (KisSelectLayerAction *q)
 
void selectNode (KisNodeSP node, int selectionOverrideMode) const
 
void selectNodes (const KisNodeList &nodesToSelect, int selectionOverrideMode, bool includeGroups) const
 

Static Public Member Functions

static int layerSelectionMode (int shortcut)
 
static int makeShortcut (LayerSelectionMode layerSelectionMode, SelectionOverrideMode selectionOverrideMode)
 
static int selectionOverrideMode (int shortcut)
 

Public Attributes

KisSelectLayerActionq {nullptr}
 
int shortcut {makeShortcut(LayerSelectionMode_TopLayer, SelectionOverrideMode_Replace)}
 

Detailed Description

Definition at line 28 of file kis_select_layer_action.cpp.

Constructor & Destructor Documentation

◆ Private()

KisSelectLayerAction::Private::Private ( KisSelectLayerAction * q)
inline

Definition at line 34 of file kis_select_layer_action.cpp.

35 : q(q)
36 {}

Member Function Documentation

◆ layerSelectionMode()

static int KisSelectLayerAction::Private::layerSelectionMode ( int shortcut)
inlinestatic

Definition at line 44 of file kis_select_layer_action.cpp.

45 {
46 // Get the layer selection mode from the second byte
47 return (shortcut >> 8) & 0xFF;
48 }

References shortcut.

◆ makeShortcut()

static int KisSelectLayerAction::Private::makeShortcut ( LayerSelectionMode layerSelectionMode,
SelectionOverrideMode selectionOverrideMode )
inlinestatic

Definition at line 38 of file kis_select_layer_action.cpp.

39 {
40 // Store the layer selection mode on the second byte and the selection override mode on the first one
42 }
static int selectionOverrideMode(int shortcut)
static int layerSelectionMode(int shortcut)

References layerSelectionMode(), and selectionOverrideMode().

◆ selectionOverrideMode()

static int KisSelectLayerAction::Private::selectionOverrideMode ( int shortcut)
inlinestatic

Definition at line 50 of file kis_select_layer_action.cpp.

51 {
52 // Get the selection override mode from the first byte
53 return shortcut & 0xFF;
54 }

References shortcut.

◆ selectNode()

void KisSelectLayerAction::Private::selectNode ( KisNodeSP node,
int selectionOverrideMode ) const
inline

Definition at line 104 of file kis_select_layer_action.cpp.

105 {
106 KisNodeList nodesToSelect;
107 nodesToSelect.append(node);
108 selectNodes(nodesToSelect, selectionOverrideMode, true);
109 }
void selectNodes(const KisNodeList &nodesToSelect, int selectionOverrideMode, bool includeGroups) const

References selectionOverrideMode(), and selectNodes().

◆ selectNodes()

void KisSelectLayerAction::Private::selectNodes ( const KisNodeList & nodesToSelect,
int selectionOverrideMode,
bool includeGroups ) const
inline

Definition at line 56 of file kis_select_layer_action.cpp.

57 {
58 KisNodeManager *nodeManager = q->inputManager()->canvas()->viewManager()->nodeManager();
59 KisNodeSP activeNode = nodeManager->activeNode();
60 KisNodeList finalSelectedNodes;
61
62 // Make the final list of nodes to select, excluding the group layers,
63 // if needed
64 if (includeGroups) {
65 finalSelectedNodes = nodesToSelect;
66 } else {
67 Q_FOREACH(KisNodeSP node, nodesToSelect) {
68 if (!dynamic_cast<KisGroupLayer*>(node.data())) {
69 finalSelectedNodes.append(node);
70 }
71 }
72 }
73
74 // Expand the group layers that contain newly selected nodes
75 Q_FOREACH(KisNodeSP node, finalSelectedNodes) {
76 KisNodeSP tmpNode = node->parent();
77 while (tmpNode) {
78 if (dynamic_cast<KisGroupLayer*>(tmpNode.data())) {
79 tmpNode->setCollapsed(false);
80 }
81 tmpNode = tmpNode->parent();
82 }
83 }
84
85 // Combine the list of nodes with the current selection
87 KisNodeList currentlySelectedNodes = nodeManager->selectedNodes();
88 Q_FOREACH(KisNodeSP node, currentlySelectedNodes) {
89 if (!finalSelectedNodes.contains(node)) {
90 finalSelectedNodes.append(node);
91 }
92 }
93 }
94
95 // Try to retain the previously selected node or select the top one otherwise
96 if (!finalSelectedNodes.contains(activeNode)) {
97 activeNode = finalSelectedNodes.last();
98 }
99
100 // Select
101 nodeManager->slotImageRequestNodeReselection(activeNode, finalSelectedNodes);
102 }
static KisInputManager * inputManager
KisViewManager * viewManager() const
KisCanvas2 * canvas() const
KisNodeSP activeNode()
Convenience function to get the active layer or mask.
KisNodeList selectedNodes()
void slotImageRequestNodeReselection(KisNodeSP activeNode, const KisNodeList &selectedNodes)
KisNodeManager * nodeManager() const
The node manager handles everything about nodes.
void setCollapsed(bool collapsed)
KisNodeWSP parent
Definition kis_node.cpp:86

References KisNodeManager::activeNode(), KisInputManager::canvas(), KisSharedPtr< T >::data(), KisAbstractInputAction::inputManager, KisViewManager::nodeManager(), KisNode::parent, q, KisNodeManager::selectedNodes(), selectionOverrideMode(), KisSelectLayerAction::SelectionOverrideMode_Add, KisBaseNode::setCollapsed(), KisNodeManager::slotImageRequestNodeReselection(), and KisCanvas2::viewManager().

Member Data Documentation

◆ q

KisSelectLayerAction* KisSelectLayerAction::Private::q {nullptr}

Definition at line 31 of file kis_select_layer_action.cpp.

31{nullptr};

◆ shortcut

int KisSelectLayerAction::Private::shortcut {makeShortcut(LayerSelectionMode_TopLayer, SelectionOverrideMode_Replace)}

Definition at line 32 of file kis_select_layer_action.cpp.

static int makeShortcut(LayerSelectionMode layerSelectionMode, SelectionOverrideMode selectionOverrideMode)

The documentation for this class was generated from the following file: