diff --git a/public/red/history.js b/public/red/history.js index cc91adacc..281c064c3 100644 --- a/public/red/history.js +++ b/public/red/history.js @@ -36,7 +36,15 @@ RED.history = function() { for (var i in ev.links) { RED.nodes.removeLink(ev.links[i]); } + for (var i in ev.workspaces) { + RED.nodes.removeWorkspace(ev.workspaces[i].id); + RED.view.removeWorkspace(ev.workspaces[i]); + } } else if (ev.t == "delete") { + for (var i in ev.workspaces) { + RED.nodes.addWorkspace(ev.workspaces[i]); + RED.view.addWorkspace(ev.workspaces[i]); + } for (var i in ev.nodes) { RED.nodes.add(ev.nodes[i]); } diff --git a/public/red/ui/view.js b/public/red/ui/view.js index 1ed8792f0..298c5a146 100644 --- a/public/red/ui/view.js +++ b/public/red/ui/view.js @@ -98,6 +98,9 @@ RED.view = function() { RED.nodes.addWorkspace(ws); workspace_tabs.addTab(ws); workspace_tabs.activateTab(tabId); + + RED.history.push({t:'add',workspaces:[ws],dirty:dirty}); + RED.view.dirty(true); }); $('#btn-workspace-edit').on("click",function() { showRenameWorkspaceDialog(activeWorkspace); @@ -1047,7 +1050,11 @@ RED.view = function() { var workspace = $(this).dialog('option','workspace'); workspace_tabs.removeTab(workspace.id); // TODO: make undoable - RED.nodes.removeWorkspace(workspace.id); + var historyEvent = RED.nodes.removeWorkspace(workspace.id); + historyEvent.t = 'delete'; + historyEvent.dirty = dirty; + historyEvent.workspaces = [workspace]; + RED.history.push(historyEvent); RED.view.dirty(true); $( this ).dialog( "close" ); } @@ -1074,6 +1081,9 @@ RED.view = function() { workspace_tabs.addTab(ws); workspace_tabs.resize(); }, + removeWorkspace: function(ws) { + workspace_tabs.removeTab(ws.id); + }, getWorkspace: function() { return activeWorkspace; },