changeset 117:f4e464a17579

Cleanup selection code in editor.
author Mike Pavone <pavone@retrodev.com>
date Mon, 15 Apr 2013 21:35:37 -0700
parents 9cf3e0b18ecc
children 0a66fe3a368a
files src/editor.tp
diffstat 1 files changed, 26 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- 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: ":"