var node;
if(fragment instanceof fragment.RangeFragment && fragment.hasSiblingBoundries()) {
- return fragment.boundriesSiblingParents();
+ return fragment.startNode.hasSameContextRoot(fragment.endNode) && fragment.boundriesSiblingParents();
}
if(fragment instanceof fragment.NodeFragment) {
node = fragment.node.getNearestElementNode();
+ if(node.isContextRoot()) {
+ node = fragment.node;
+ }
+
return {
node1: node,
node2: node
item1 = list.object.getItem(0),
text = item1 ? item1.contents()[0] : undefined, //
doc = boundries.node1.document;
-
- return doc.createFragment(doc.CaretFragment, {node: text, offset:0});
+ if(text) {
+ return doc.createFragment(doc.CaretFragment, {node: text, offset:0});
+ }
}, {
metadata: {
- description: action.getState().description
+ description: action.getState().description,
+ fragment: params.fragment
},
success: callback
});
toSearch.some(function(node) {
if(node.is('list')) {
node.document.transaction(function() {
- node.object.extractListItems();
+ var firstItem = node.object.extractListItems(),
+ toret;
+ if(params.fragment.isValid()) {
+ toret = params.fragment;
+ } else {
+ toret = node.document.createFragment(node.document.NodeFragment, {node: firstItem});
+ }
+ return toret;
}, {
metadata: {
- description: action.getState().description
+ description: action.getState().description,
+ fragment: params.fragment
},
success: callback
});
var node = params.fragment.node,
action = this;
node.document.transaction(function() {
- node.getParent('list').setClass(type === 'Bullet' ? 'list' : 'list.enum');
+ var list = node.getParent('list');
+ list.setClass(type === 'Bullet' ? 'list' : 'list.enum');
+ if(params.fragment.isValid()) {
+ return params.fragment;
+ } else {
+ return node.document.createFragment(node.document.NodeFragment, {node: list.contents()[0]});
+ }
}, {
metadata: {
- description: action.getState().description
+ description: action.getState().description,
+ fragment: params.fragment
},
success: callback
});
return false;
};
+ var label = type === 'Bullet' ? gettext('bull. list') : gettext('num. list');
return {
name: 'toggle' + type + 'List',
fragment: {type: 'context', name: 'fragment'}
},
stateDefaults: {
- label: type === 'Bullet' ? gettext('bull. list') : gettext('num. list')
+ label: label
},
getState: function(params) {
if(!params.fragment || !params.fragment.isValid()) {
if((list.getClass() === 'list' && type === 'Enum') || (list.getClass() === 'list.enum' && type === 'Bullet')) {
return {
allowed: true,
- description: interpolate(gettext('Change list type to %s'), [type]),
+ description: interpolate(gettext('Change list type to %s'), [label]),
execute: execute.changeType
};
}
}
var boundries = getBoundriesForAList(params.fragment);
- if(boundries) {
+ if(boundries && boundries.node1.hasSameContextRoot(boundries.node2)) {
return {
allowed: true,
description: interpolate(gettext('Make %s fragment(s) into list'), [countItems(getBoundriesForAList(params.fragment))]),