# HG changeset patch # User Mike Pavone # Date 1366086937 25200 # Node ID f4e464a1757914c1aee53b321b4aa4aefbb1b67b # Parent 9cf3e0b18ecc72375fb10e62c62a70083a4b6661 Cleanup selection code in editor. diff -r 9cf3e0b18ecc -r f4e464a17579 src/editor.tp --- a/src/editor.tp Mon Apr 15 21:14:55 2013 -0700 +++ b/src/editor.tp Mon Apr 15 21:35:37 2013 -0700 @@ -44,6 +44,26 @@ valid? <- false } +setSelection:withInNode <- :astnode :innode { + fakeEvent <- #{ + stopPropagation <- :Blah { + } + } + selection <- #{ + valid? <- true + in <- { + (innode domNode) onclick: fakeEvent + } + out <- { + fakeEvent <- #{ + stopPropagation <- :Blah { + } + } + ((astnode up) domNode) onclick: fakeEvent + } + } +} + editFile <- :path { get: path :request { addClass: (q: "body") "editorMode" @@ -105,6 +125,7 @@ selectParent: domnode selectQuery: ".selectParent > .opname" in: domnode showOps + setSelection: astnode withInNode: (astnode left) event stopPropagation: (foreign: undefined) } @@ -115,29 +136,12 @@ syms <- filter: (symtable allSymbols: (foreign: undefined)) :sym { isLambda: ((symtable find: sym) def) } - self selection!: #{ - valid? <- true - in <- { - fakeEvent <- #{ - stopPropagation <- :Blah { - } - } - if: (astnode receiver) != (foreign: null) { - ((astnode receiver) domNode) onclick: fakeEvent - } else: { - if: ((astnode args) length) > 0 { - (((astnode args) getEl: 0) domNode) onclick: fakeEvent - } - } - } - out <- { - fakeEvent <- #{ - stopPropagation <- :Blah { - } - } - ((astnode up) domNode) onclick: fakeEvent - } + inner <- if: (astnode receiver) != (foreign: null) { + astnode receiver + } else: { + (astnode args) getEl: 0 } + setSelection: astnode withInNode: inner popInscope: syms onClick: :key { astnode name!: key parts <- key split: ":"