     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 (input.qualifierDown[QUAL_CTRL] && sourceNodes.length == 1)
+                SceneReorder(sourceNodes[0], targetNode);
+            else
+            {
+                // If target is null, parent to scene
+                if (targetNode is null)
+                    targetNode = editorScene;
+
                 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]);

        if (targetElement is null)
            return;

        if (!input.qualifierDown[QUAL_CTRL])
        {
            if (!UIElementChangeParent(sourceElement, targetElement))
                return;
        }
        else
        {
            if (!UIElementReorder(sourceElement, targetElement))
                return;
        }

        // Focus the element at its new position in the list which in turn should trigger a refresh in attribute inspector
        FocusUIElement(sourceElement);

        variant = source.GetVar(COMPONENT_ID_VAR);
        if (!variant.empty)
            sourceComponent = editorScene.GetComponent(variant.GetUInt());
        Array<Node@> sourceNodes = GetMultipleSourceNodes(source);

        itemType = ITEM_COMPONENT;

        if (input.qualifierDown[QUAL_CTRL] && sourceNodes.length == 1)
        {
            // Reorder components within node
            if (sourceComponent !is null && targetComponent !is null && sourceComponent.node is targetComponent.node)
                return true;
        }
        else
        {
            // Dragging of nodes to StaticModelGroup, SplinePath or Constraint
            if (sourceNode !is null && targetComponent !is null && (targetComponent.type == STATICMODELGROUP_TYPE ||
