fnp
/
fnpeditor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
editor: fix splitting text when its parent contains comments
[fnpeditor.git]
/
src
/
editor
/
plugins
/
core
/
core.js
diff --git
a/src/editor/plugins/core/core.js
b/src/editor/plugins/core/core.js
index
935b6d4
..
450f147
100644
(file)
--- a/
src/editor/plugins/core/core.js
+++ b/
src/editor/plugins/core/core.js
@@
-18,14
+18,27
@@
plugin.documentExtension.textNode.transformations = {
breakContent: {
impl: function(args) {
var node = this,
breakContent: {
impl: function(args) {
var node = this,
+ parentDescribingNodes = [],
newNodes, emptyText;
newNodes = node.split({offset: args.offset});
newNodes, emptyText;
newNodes = node.split({offset: args.offset});
+ newNodes.second.contents()
+ .filter(function(child) {
+ return child.object.describesParent;
+ })
+ .forEach(function(child) {
+ //child.detach();
+ parentDescribingNodes.push(child);
+ child.detach();
+ });
[newNodes.first, newNodes.second].some(function(newNode) {
if(!(newNode.contents().length)) {
emptyText = newNode.append({text: ''});
return true; // break
}
});
[newNodes.first, newNodes.second].some(function(newNode) {
if(!(newNode.contents().length)) {
emptyText = newNode.append({text: ''});
return true; // break
}
});
+ parentDescribingNodes.forEach(function(node) {
+ newNodes.first.append(node);
+ });
return _.extend(newNodes, {emptyText: emptyText});
},
getChangeRoot: function() {
return _.extend(newNodes, {emptyText: emptyText});
},
getChangeRoot: function() {
@@
-79,7
+92,17
@@
var undoRedoAction = function(dir) {
icon: 'share-alt',
iconStyle: dir === 'undo' ? '-webkit-transform: scale(-1,1); transform: scale(-1, 1)' : '',
execute: function(callback, params) {
icon: 'share-alt',
iconStyle: dir === 'undo' ? '-webkit-transform: scale(-1,1); transform: scale(-1, 1)' : '',
execute: function(callback, params) {
+ var metadata = _.last(params.document[dir+'Stack']).metadata,
+ fragment = metadata && metadata.fragment;
params.document[dir]();
params.document[dir]();
+ if(fragment) {
+ if(!fragment.isValid()) {
+ fragment.restoreFromPaths();
+ }
+ if(fragment.isValid()) {
+ callback(fragment);
+ }
+ }
callback();
},
},
callback();
},
},
@@
-210,7
+233,8
@@
var createWrapTextAction = function(createParams) {
return newFragment;
}, {
metadata: {
return newFragment;
}, {
metadata: {
- description: createParams.unwrapDescription
+ description: createParams.unwrapDescription,
+ fragment: params.fragment
},
success: callback
});
},
success: callback
});
@@
-246,7
+270,8
@@
var createWrapTextAction = function(createParams) {
}
}, {
metadata: {
}
}, {
metadata: {
- description: createParams.wrapDescription
+ description: createParams.wrapDescription,
+ fragment: params.fragment
},
success: callback
});
},
success: callback
});
@@
-288,7
+313,8
@@
var createLinkFromSelection = function(callback, params) {
return doc.createFragment(doc.CaretFragment, {node: span.contents()[0], offset:0});
}, {
metadata: {
return doc.createFragment(doc.CaretFragment, {node: span.contents()[0], offset:0});
}, {
metadata: {
- description: action.getState().description
+ description: action.getState().description,
+ fragment: params.fragment
},
success: callback
});
},
success: callback
});
@@
-316,7
+342,8
@@
var editLink = function(callback, params) {
return params.fragment;
}, {
metadata: {
return params.fragment;
}, {
metadata: {
- description: action.getState().description
+ description: action.getState().description,
+ fragment: params.fragment
},
success: callback
});
},
success: callback
});