diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-04-22 22:53:39 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-04-22 22:53:39 -0700 |
commit | d31037ffdcdb8097b91af121a27ef18c15f7e802 (patch) | |
tree | c697eab36eeb21eb15d27937c68396f0d0786f14 /sandbox/007-sandbox-delete.mu | |
parent | ea5e7fd4cb5757589cf3cb52439a3d432517bc7a (diff) | |
download | mu-d31037ffdcdb8097b91af121a27ef18c15f7e802.tar.gz |
2854 - purge get-address from sandbox/ app
Diffstat (limited to 'sandbox/007-sandbox-delete.mu')
-rw-r--r-- | sandbox/007-sandbox-delete.mu | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/sandbox/007-sandbox-delete.mu b/sandbox/007-sandbox-delete.mu index dbf5d70c..f99012b6 100644 --- a/sandbox/007-sandbox-delete.mu +++ b/sandbox/007-sandbox-delete.mu @@ -85,8 +85,20 @@ def delete-sandbox t:touch-event, env:address:shared:programming-environment-dat at-right?:boolean <- equal click-column, right return-unless at-right?, 0/false click-row:number <- get t, row:offset - prev:address:address:shared:sandbox-data <- get-address *env, sandbox:offset - curr:address:shared:sandbox-data <- get *env, sandbox:offset + { + first:address:shared:sandbox-data <- get *env, sandbox:offset + reply-unless first, 0/false + target-row:number <- get *first, starting-row-on-screen:offset + delete-first?:boolean <- equal target-row, click-row + break-unless delete-first? + new-first:address:shared:sandbox-data <- get *first, next-sandbox:offset + *env <- put *env, sandbox:offset, new-first + env <- fixup-delete env, new-first + return 1/true # force rerender + } + prev:address:shared:sandbox-data <- get *env, sandbox:offset + assert prev, [failed to find any sandboxes!] + curr:address:shared:sandbox-data <- get *prev, next-sandbox:offset { break-unless curr # more sandboxes to check @@ -95,27 +107,36 @@ def delete-sandbox t:touch-event, env:address:shared:programming-environment-dat delete-curr?:boolean <- equal target-row, click-row break-unless delete-curr? # delete this sandbox - *prev <- get *curr, next-sandbox:offset - # update sandbox count - sandbox-count:address:number <- get-address *env, number-of-sandboxes:offset - *sandbox-count <- subtract *sandbox-count, 1 - # if it's the last sandbox and if it was the only sandbox rendered, reset scroll - { - break-if *prev - render-from:address:number <- get-address *env, render-from:offset - reset-scroll?:boolean <- equal *render-from, *sandbox-count - break-unless reset-scroll? - *render-from <- copy -1 - } + next:address:shared:sandbox-data <- get *curr, next-sandbox:offset + *prev <- put *prev, next-sandbox:offset, next + env <- fixup-delete env, next return 1/true # force rerender } - prev <- get-address *curr, next-sandbox:offset + prev <- copy curr curr <- get *curr, next-sandbox:offset loop } return 0/false ] +def fixup-delete env:address:shared:programming-environment-data, next:address:shared:sandbox-data -> env:address:shared:programming-environment-data [ + local-scope + load-ingredients + # update sandbox count + sandbox-count:number <- get *env, number-of-sandboxes:offset + sandbox-count <- subtract sandbox-count, 1 + *env <- put *env, number-of-sandboxes:offset, sandbox-count + { + break-if next + # deleted sandbox was last + render-from:number <- get *env, render-from:offset + reset-scroll?:boolean <- equal render-from, sandbox-count + break-unless reset-scroll? + # deleted sandbox was only sandbox rendered, so reset scroll + *env <- put *env, render-from:offset, -1 + } +] + scenario deleting-sandbox-after-scroll [ trace-until 100/app # trace too long assume-screen 30/width, 10/height |