changeset 29:18cec540238a

Prevent event bubbling so lambda click handler doesn't get called when clicking on an element inside it
author Mike Pavone <pavone@retrodev.com>
date Thu, 05 Apr 2012 21:06:43 -0700
parents 93bbc4c8be95
children 608eb70fe261
files editor.js editor.tp
diffstat 2 files changed, 13 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/editor.js	Thu Apr 05 19:06:10 2012 -0700
+++ b/editor.js	Thu Apr 05 21:06:43 2012 -0700
@@ -14,8 +14,8 @@
 	var astNode = this;
 	var el = newEl('div', {
 		className: 'lambda',
-		onclick: function() {
-			return mainModule.lambdaClick(this, astNode);
+		onclick: function(event) {
+			mainModule.lambdaClick(this, astNode, event);
 		}
 	});
 	var args = newEl('div', {
@@ -96,8 +96,8 @@
 			base.appendChild(newEl('span', {
 				textContent: parts[i] + (this.receiver && parts.length == 1 ? '' : ':'),
 				className: 'funpart',
-				onclick: function() {
-					return mainModule.funClick(this, astNode);
+				onclick: function(event) {
+					mainModule.funClick(this, astNode, event);
 				}}));
 			if (this.args[i]) {
 				this.args[i].toHTML(base);
@@ -115,8 +115,8 @@
 	node.appendChild(newEl('span', {
 		className: 'symbol',
 		textContent: this.name,
-		onclick: function() {
-			return mainModule.symbolClick(this, astNode);
+		onclick: function(event) {
+			mainModule.symbolClick(this, astNode, event);
 		}
 	}));
 }
--- a/editor.tp	Thu Apr 05 19:06:10 2012 -0700
+++ b/editor.tp	Thu Apr 05 21:06:43 2012 -0700
@@ -97,28 +97,29 @@
 	}
 }
 
-symbolClick <- :domnode astnode {
+symbolClick <- :domnode astnode event {
 	console log: astnode
 	selectNode: domnode
 	popInscope: ((astnode symbols) allSymbols) onClick: :key {
 		domnode textContent!: key
 		astnode name!: key
 	}
-	
+	event stopPropagation
 }
 
-funClick <- :domnode astnode {
+funClick <- :domnode astnode event {
 	selectParent: domnode
 	selectQuery: ".selectParent > .funpart" in: (domnode parentNode)
 	symtable <- astnode symbols
 	syms <- filter: (symtable allSymbols) :sym {
 		isLambda: ((symtable find: sym) def)
 	}
-	popInscope: syms
+	popInscope: syms onClick: {}
+	event stopPropagation
 }
 
-lambdaClick <- :domnode astnode {
-	symbolClick: domnode astnode
+lambdaClick <- :domnode astnode event {
+	symbolClick: domnode astnode event
 }
 
 main <- {