prevend second bind

This commit is contained in:
Dima Granetchi
2014-11-23 22:09:23 +02:00
parent f98de63287
commit 2bcbdeae2f
+12 -11
View File
@@ -85,14 +85,21 @@ class BindExt {
} }
} while (isChain); } while (isChain);
if (e != start) { var doBind = e != start;
if (doBind) {
var key = start.toString();
for (k in binded.keys()) if (k.startsWith(key)) {
doBind = false;
break;
}
}
if (doBind) {
var pre = '_${prefix++}'; var pre = '_${prefix++}';
var zeroListener = listenerName(0, pre); var zeroListener = listenerName(0, pre);
var c = null; var c = null;
try { try {
c = warnPrepareChain(start, macro $i { zeroListener }, pre, true); c = warnPrepareChain(start, macro $i { zeroListener }, pre, true);
} } catch (e:bindx.Error) {
catch (e:bindx.Error) {
Context.warning('${start.toString()} is not bindable.', e.pos); Context.warning('${start.toString()} is not bindable.', e.pos);
//e.contextWarning(); //e.contextWarning();
} }
@@ -118,17 +125,11 @@ class BindExt {
var k = keys[i]; var k = keys[i];
var j = i; var j = i;
var remove = false; var remove = false;
while (++j < keys.length) { while (++j < keys.length) if (keys[j].startsWith(k)) {
if (keys[j].startsWith(k)) {
remove = true; remove = true;
break; break;
} }
} if (remove) keys = keys.splice(i, 1); else i++;
if (remove) {
keys = keys.splice(i, 1);
//Context.warning("skip second bind " + k, binded.get(k).e.pos);
}
else i++;
} }
for (k in keys) { for (k in keys) {