         variant = target.GetVar(NODE_ID_VAR);
         if (!variant.empty)
             targetNode = editorScene.GetNode(variant.GetUInt());
+        Array<Node@> sourceNodes = GetMultipleSourceNodes(source);
 
         if (sourceNode !is null && targetNode !is null)
         {
             itemType = ITEM_NODE;
 
+            // Ctrl pressed: reorder
+            if (input.qualifierDown[QUAL_CTRL] && sourceNodes.length == 1)
+            {
+                // Must be within the same parent
+                if (sourceNode.parent is null || sourceNode.parent !is targetNode.parent)
+                    return false;
+            }
             // No ctrl: Reparent
-            if (!input.qualifierDown[QUAL_CTRL])
+            else
             {
                 if (sourceNode.parent is targetNode)
                     return false;
                 if (targetNode.parent is sourceNode)
                     return false;
             }
-            // Ctrl pressed: reorder
-            else
-            {
-                // Must be within the same parent
-                if (sourceNode.parent is null || sourceNode.parent !is targetNode.parent)
-                    return false;
-            }
         }
 
         // Resource browser

    if (itemType == ITEM_NODE)
    {
        Node@ targetNode = editorScene.GetNode(target.vars[NODE_ID_VAR].GetUInt());

        // If target is null, parent to scene
        if (targetNode is null)
            targetNode = editorScene;

        Array<Node@> sourceNodes = GetMultipleSourceNodes(source);
        if (sourceNodes.length > 0)
        {
            if (!input.qualifierDown[QUAL_CTRL])
            {
                if (sourceNodes.length > 1)
                    SceneChangeParent(sourceNodes[0], sourceNodes, targetNode);
                else
                    SceneChangeParent(sourceNodes[0], targetNode);
            }
            else
            {
                if (sourceNodes.length == 1)
                    SceneReorder(sourceNodes[0], targetNode);
            }

            // Focus the node at its new position in the list which in turn should trigger a refresh in attribute inspector
            FocusNode(sourceNodes[0]);

            int type = source.GetVar(TEXT_VAR_RESOURCE_TYPE).GetInt();
            if (targetComponent.type == STATICMODEL_TYPE || targetComponent.type == ANIMATEDMODEL_TYPE)
                return type == RESOURCE_TYPE_MATERIAL || type == RESOURCE_TYPE_MODEL;
        }

        return false;
