Implemented a clipboard that works across tabs and windows.

This commit is contained in:
KB Jørgensen
2018-01-18 13:37:49 +01:00
parent 6f7aa650f8
commit 02c8721c2d
4 changed files with 107 additions and 62 deletions

View File

@@ -160,6 +160,7 @@ svgEditor.addExtension("Connector", function(S) {
// Loop through connectors to see if one is connected to the element
connectors.each(function() {
var connector = this;
var add_this;
function add () {
if ($.inArray(this, elems) !== -1) {
@@ -167,12 +168,24 @@ svgEditor.addExtension("Connector", function(S) {
add_this = true;
}
}
var start = elData(this, "c_start");
var end = elData(this, "c_end");
var parts = [getElem(start), getElem(end)];
// Grab the ends
var parts = [];
['start', 'end'].forEach(function (pos, i) {
var part = elData(this, 'c_'+pos);
if(part == null) {
part = document.getElementById(
connector.attributes['se:connector'].value.split(' ')[i]
);
elData(connector, 'c_'+pos, part.id);
elData(connector, pos+'_bb', svgCanvas.getStrokedBBox([part]));
}
parts.push(part);
});
for (i = 0; i < 2; i++) {
var c_elem = parts[i];
add_this = false;
// The connected element might be part of a selected group
$(c_elem).parents().each(add);
@@ -261,7 +274,6 @@ svgEditor.addExtension("Connector", function(S) {
var mse = svgCanvas.moveSelectedElements;
svgCanvas.moveSelectedElements = function() {
svgCanvas.removeFromSelection($(conn_sel).toArray());
var cmd = mse.apply(this, arguments);
updateConnectors();
return cmd;
@@ -580,6 +592,18 @@ svgEditor.addExtension("Connector", function(S) {
updateConnectors();
}
},
IDsUpdated: function(input) {
var remove = [];
input.elems.forEach(function(elem){
if('se:connector' in elem.attr) {
elem.attr['se:connector'] = elem.attr['se:connector'].split(' ')
.map(function(oldID){ return input.changes[oldID] }).join(' ');
if(!/. ./.test(elem.attr['se:connector']))
remove.push(elem.attr.id);
}
});
return {remove: remove};
},
toolButtonStateUpdate: function(opts) {
if (opts.nostroke) {
if ($('#mode_connect').hasClass('tool_button_current')) {