Skip to content

Commit acda05c

Browse files
committed
Fix crash when grouping by key press and no nodes selected.
1 parent c95b03f commit acda05c

2 files changed

Lines changed: 26 additions & 5 deletions

File tree

Sources/NodeUIEngine/NUIE_InteractionHandler.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,9 @@ EventHandlerResult InteractionHandler::HandleKeyPress (NodeUIEnvironment& env, c
841841
switch (pressedKey.GetKeyCode ()) {
842842
case KeyCode::Delete:
843843
{
844-
command.reset (new DeleteNodesMenuCommand (uiManager, env, selectedNodes));
844+
if (!selectedNodes.IsEmpty ()) {
845+
command.reset (new DeleteNodesMenuCommand (uiManager, env, selectedNodes));
846+
}
845847
}
846848
break;
847849
case KeyCode::SelectAll:
@@ -856,18 +858,24 @@ EventHandlerResult InteractionHandler::HandleKeyPress (NodeUIEnvironment& env, c
856858
break;
857859
case KeyCode::Copy:
858860
{
859-
command.reset (new CopyNodesMenuCommand (uiManager, selectedNodes));
861+
if (!selectedNodes.IsEmpty ()) {
862+
command.reset (new CopyNodesMenuCommand (uiManager, selectedNodes));
863+
}
860864
}
861865
break;
862866
case KeyCode::Paste:
863867
{
864-
Point modelPastePosition = pastePositionCalculator.CalculatePastePosition (uiManager, env);
865-
command.reset (new PasteNodesMenuCommand (uiManager, modelPastePosition));
868+
if (uiManager.CanPaste ()) {
869+
Point modelPastePosition = pastePositionCalculator.CalculatePastePosition (uiManager, env);
870+
command.reset (new PasteNodesMenuCommand (uiManager, modelPastePosition));
871+
}
866872
}
867873
break;
868874
case KeyCode::Group:
869875
{
870-
command.reset (new CreateGroupMenuCommand (uiManager, selectedNodes));
876+
if (!selectedNodes.IsEmpty ()) {
877+
command.reset (new CreateGroupMenuCommand (uiManager, selectedNodes));
878+
}
871879
}
872880
break;
873881
case KeyCode::Undo:

Sources/NodeUIEngine/NUIE_NodeUIManagerCommands.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ DeleteNodesCommand::DeleteNodesCommand (const NE::NodeCollection& nodes, NE::Eva
5454

5555
void DeleteNodesCommand::Do (NodeUIManager& uiManager)
5656
{
57+
if (DBGERROR (nodes.IsEmpty ())) {
58+
return;
59+
}
5760
nodes.Enumerate ([&] (const NE::NodeId& nodeId) {
5861
uiManager.DeleteNode (nodeId, evaluationEnv);
5962
return true;
@@ -198,6 +201,9 @@ CopyNodesCommand::CopyNodesCommand (const NE::NodeCollection& nodes) :
198201

199202
void CopyNodesCommand::Do (NodeUIManager& uiManager)
200203
{
204+
if (DBGERROR (nodes.IsEmpty ())) {
205+
return;
206+
}
201207
uiManager.Copy (nodes);
202208
}
203209

@@ -209,6 +215,10 @@ PasteNodesCommand::PasteNodesCommand (const Point& position) :
209215

210216
void PasteNodesCommand::Do (NodeUIManager& uiManager)
211217
{
218+
if (DBGERROR (!uiManager.CanPaste ())) {
219+
return;
220+
}
221+
212222
std::unordered_set<NE::NodeId> oldNodes;
213223
uiManager.EnumerateUINodes ([&] (const UINodeConstPtr& uiNode) {
214224
oldNodes.insert (uiNode->GetId ());
@@ -253,6 +263,9 @@ AddGroupCommand::AddGroupCommand (const UINodeGroupPtr& uiGroup, const NE::NodeC
253263

254264
void AddGroupCommand::Do (NodeUIManager& uiManager)
255265
{
266+
if (DBGERROR (nodes.IsEmpty ())) {
267+
return;
268+
}
256269
uiManager.AddUINodeGroup (uiGroup);
257270
uiManager.AddNodesToUIGroup (uiGroup, nodes);
258271
}

0 commit comments

Comments
 (0)