diff options
author | tschicke-brown <tyler_schicke@brown.edu> | 2019-04-08 21:26:48 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-08 21:26:48 -0400 |
commit | a2135bcc0a995378aad0e71ade832a4d526a37f0 (patch) | |
tree | 9edabab547aa21dad429f2e6450c110793e3fcbc /src/client/util/UndoManager.ts | |
parent | a63a3f912f8857963cd5cc14cf1e73f645eb3477 (diff) | |
parent | 4dd5460cfafc33df30bcccc0145af17f81fe5d3e (diff) |
Merge pull request #82 from browngraphicslab/undo-expansion
Undo expansion
Diffstat (limited to 'src/client/util/UndoManager.ts')
-rw-r--r-- | src/client/util/UndoManager.ts | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/client/util/UndoManager.ts b/src/client/util/UndoManager.ts index eb13ff1ee..10aa6d523 100644 --- a/src/client/util/UndoManager.ts +++ b/src/client/util/UndoManager.ts @@ -35,7 +35,20 @@ function propertyDecorator(target: any, key: string | symbol) { } }) } -export function undoBatch(target: any, key: string | symbol, descriptor?: TypedPropertyDescriptor<any>): any { + +export function undoBatch(target: any, key: string | symbol, descriptor?: TypedPropertyDescriptor<any>): any; +export function undoBatch(fn: (...args: any[]) => any): (...args: any[]) => any; +export function undoBatch(target: any, key?: string | symbol, descriptor?: TypedPropertyDescriptor<any>): any { + if (!key) { + return function () { + let batch = UndoManager.StartBatch(""); + try { + return target.apply(undefined, arguments) + } finally { + batch.end(); + } + } + } if (!descriptor) { propertyDecorator(target, key); return; @@ -129,8 +142,11 @@ export namespace UndoManager { export function RunInBatch(fn: () => void, batchName: string) { let batch = StartBatch(batchName); - fn(); - batch.end(); + try { + fn(); + } finally { + batch.end(); + } } export const Undo = action(() => { |