client/js/paper-renderer.js
changeset 122 ea11e17e0a35
parent 120 112a82ddd7e5
child 132 860340d4c645
--- a/client/js/paper-renderer.js	Wed Apr 03 16:15:55 2013 +0200
+++ b/client/js/paper-renderer.js	Wed Apr 03 16:17:36 2013 +0200
@@ -33,7 +33,7 @@
 	},
     drawEditBox : function(_options, _coords, _path, _xmargin, _selector) {
     	_selector.css({
-            width: ( _options.tooltip_width - 2* _options.tooltip_margin ),
+            width: ( _options.tooltip_width - 2* _options.tooltip_padding ),
         })
         var _height = _selector.outerHeight() + 2* _options.tooltip_padding,
             _isLeft = (_coords.x < paper.view.center.x ? 1 : -1),
@@ -1406,11 +1406,15 @@
     	_event.stopPropagation();
     	_event.preventDefault();
     });
-    this.canvas_$.on("dragenter", function(_e) {
+    this.canvas_$.on("dragenter", function(_event) {
     	_allowScroll = false;
+    	_event.stopPropagation();
+    	_event.preventDefault();
     });
-    this.canvas_$.on("dragleave", function(_e) {
+    this.canvas_$.on("dragleave", function(_event) {
     	_allowScroll = true;
+    	_event.stopPropagation();
+    	_event.preventDefault();
     });
     this.canvas_$.on("drop", function(_event) {
     	_event.stopPropagation();
@@ -1419,14 +1423,15 @@
     	if (!_this.isEditable()) {
     		return;
     	}
-    	var res = {}
-    	if (_event.originalEvent.dataTransfer.types) {
-    		Rkns._(_event.originalEvent.dataTransfer.types).each(function(t) {
-	    		return res[t] = _event.originalEvent.dataTransfer.getData(t);
-	    	});
-    	} else {
-    		var text = _event.originalEvent.dataTransfer.getData("text");
-    		switch(text[0]) {
+    	var res = {};
+    	Rkns._(_event.originalEvent.dataTransfer.types).each(function(t) {
+    		try {
+    			res[t] = _event.originalEvent.dataTransfer.getData(t);
+    		} catch(e) {}
+    	});
+		var text = _event.originalEvent.dataTransfer.getData("Text");
+		if (typeof text === "string") {
+			switch(text[0]) {
     			case "{":
     			case "[":
     				try {
@@ -1434,15 +1439,33 @@
     					_(res).extend(data);
     				}
     				catch(e) {
-    					res["text/plain"] = text;
+    					if (!res["text/plain"]) {
+    						res["text/plain"] = text;
+    					}
     				}
 				break;
 				case "<":
-					res["text/html"] = text;
+					if (!res["text/html"]) {
+						res["text/html"] = text;
+					}
 				break;
+				default:
+					if (!res["text/plain"]) {
+						res["text/plain"] = text;
+					}
     		}
-    		res["text/uri-list"] = _event.originalEvent.dataTransfer.getData("URL");
-    	}
+		}
+		var url = _event.originalEvent.dataTransfer.getData("URL");
+		if (url && !res["text/uri-list"]) {
+			res["text/uri-list"] = url;
+		}
+		if (res["text/json"] || res["application/json"]) {
+			try {
+				var data = JSON.parse(res["text/json"] || res["application/json"]);
+				_(res).extend(data);
+			}
+			catch(e) {}
+		}
     	var newNode = {};
     	switch(res["text/x-iri-specific-site"]) {
     		case "twitter":
@@ -1496,8 +1519,8 @@
     	var fields = ["title", "description", "uri", "image"];
     	for (var i = 0; i < fields.length; i++) {
     		var f = fields[i];
-    		if (res["text/x-iri-" + f]) {
-    			newNode[f] = res["text/x-iri-" + f];
+    		if (res["text/x-iri-" + f] || res[f]) {
+    			newNode[f] = res["text/x-iri-" + f] || res[f];
     		}
     	}
     	if (newNode.title || newNode.description || newNode.uri) {