diff -r d3e79465d285 -r ea11e17e0a35 client/js/paper-renderer.js --- 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) {