diff options
Diffstat (limited to 'js/undo.js')
| -rw-r--r-- | js/undo.js | 34 |
1 files changed, 17 insertions, 17 deletions
@@ -34,10 +34,10 @@ var update_dom = function(){ } // state is an undo or redo state that might contain these props -// {lexs: {'0,0': LexState, ...}, -// focus: {x:, y: }, -// size: {w:, h: }, -// rects: [{x:, y:, w:, h:, lexs: [LexState, ...]}, ...] +// { lexs: {'0,0': LexState, ...}, // for sparse lex changes (eg brush, fill) +// focus: {x:, y: }, +// size: {w:, h: }, +// rects: [{x:, y:, w:, h:, lexs: [LexState, ...]}, ...] // } var new_state = function(){ var state = {lexs:{}}; @@ -132,24 +132,24 @@ var restore_state = function(state){ if (make_redo){ state.redo = new_redo() - } - // copy saved rects that intersect with current canvas size - // important to do this before resizing canvas - if (make_redo && 'rects' in state){ - for (var ri=0, rect; rect=state.rects[ri]; ri++){ - if (rect.x >= canvas.w || - rect.y >= canvas.h) continue; - var w = Math.min(rect.w, canvas.w - rect.x) - var h = Math.min(rect.h, canvas.h - rect.y) - save_rect(rect.x, rect.y, w, h, state.redo) + // copy saved rects that intersect with current canvas size + // important to do this before resizing canvas + if ('rects' in state){ + for (var ri=0, rect; rect=state.rects[ri]; ri++){ + if (rect.x >= canvas.w || + rect.y >= canvas.h) continue; + var w = Math.min(rect.w, canvas.w - rect.x) + var h = Math.min(rect.h, canvas.h - rect.y) + save_rect(rect.x, rect.y, w, h, state.redo) + } + } + if ('size' in state){ + save_resize(state.size.w, state.size.h, canvas.w, canvas.h, state.redo) } } if ('size' in state){ - if (make_redo){ - save_resize(state.size.w, state.size.h, canvas.w, canvas.h, state.redo) - } canvas.resize(state.size.w, state.size.h, true); } |
