this.box.hide();
this.addWidget(this.box);
},
- markAsCurrent: function(toggle) {
- this.box.toggle(toggle);
+ onStateChange: function(changes) {
+ genericElement.onStateChange.call(this, changes);
+ if(_.isBoolean(changes.active)) {
+ this.box.toggle(changes.active);
+ }
},
onNodeAttrChange: function(event) {
if(event.meta.attr === 'href') {
changeLink: function(e) {
var el = this,
doc = this.wlxmlNode.document,
+ offset = el.canvas.getSelection().toDocumentFragment().offset,
dialog = Dialog.create({
title: gettext('Edit link'),
executeButtonText: gettext('Apply'),
}, {
metadata: {
description: gettext('Edit link'),
- fragment: doc.createFragment(doc.CaretFragment, {node: el.wlxmlNode.contents()[0], offset:0})
+ fragment: doc.createFragment(doc.CaretFragment, {node: el.wlxmlNode.contents()[0], offset:offset})
+ },
+ success: function() {
+ el.canvas.select(doc.createFragment(doc.CaretFragment, {node: el.wlxmlNode.contents()[0], offset:offset}));
}
});
});
doc = this.wlxmlNode.document;
el.wlxmlNode.document.transaction(function() {
- el.wlxmlNode.unwrapContent();
+ var f = el.canvas.getSelection().toDocumentFragment(),
+ prefLen = 0,
+ ret;
+
+ if(el.wlxmlNode.isPrecededByTextNode()) {
+ prefLen = el.wlxmlNode.prev().getText().length;
+ }
+
+ ret = el.wlxmlNode.unwrapContent();
+ return doc.createFragment(doc.CaretFragment, {node: ret.element1, offset: prefLen + f.offset});
}, {
metadata: {
description: gettext('Remove link'),
fragment: doc.createFragment(doc.CaretFragment, {node: el.wlxmlNode.contents()[0], offset:0})
+ },
+ success: function(ret) {
+ el.canvas.select(ret);
}
});
},