Skip to content
This repository has been archived by the owner on Sep 6, 2021. It is now read-only.

Create files on collapsed folders (#2085) #2198

Merged
merged 1 commit into from
Dec 5, 2012
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 29 additions & 18 deletions src/project/ProjectManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -1131,25 +1131,36 @@ define(function (require, exports, module) {
// In the meantime, pass null for node so new item is placed
// relative to the selection
node = selection;

// Open the node before creating the new child
_projectTree.jstree("open_node", node);

// Create the node and open the editor
_projectTree.jstree("create", node, position, {data: initialName}, null, skipRename);

if (!skipRename) {
var $renameInput = _projectTree.find(".jstree-rename-input");

$renameInput.on("keydown", function (event) {
// Listen for escape key on keydown, so we can remove the node in the create.jstree handler above
if (event.keyCode === KeyEvent.DOM_VK_ESCAPE) {

escapeKeyPressed = true;
}
});

function createNode() {
// Create the node and open the editor
_projectTree.jstree("create", node, position, {data: initialName}, null, skipRename);

if (!skipRename) {
var $renameInput = _projectTree.find(".jstree-rename-input");

$renameInput.on("keydown", function (event) {
// Listen for escape key on keydown, so we can remove the node in the create.jstree handler above
if (event.keyCode === KeyEvent.DOM_VK_ESCAPE) {

escapeKeyPressed = true;
}
});

ViewUtils.scrollElementIntoView(_projectTree, $renameInput, true);
}
}

ViewUtils.scrollElementIntoView(_projectTree, $renameInput, true);
// There is a race condition in jstree if "open_node" and "create" are called in rapid
// succession and the node was not yet loaded. To avoid it, first open the node and wait
// for the open_node event before trying to create the new one. See #2085 for more details.
if (wasNodeOpen) {
createNode();
} else {
_projectTree.one("open_node.jstree", createNode);

// Open the node before creating the new child
_projectTree.jstree("open_node", node);
}

return result.promise();
Expand Down