--- 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) {