Skip to content

Commit 3082e1b

Browse files
author
seenxu
committed
Merge branch 'issue9'
2 parents 55098e7 + 8bede23 commit 3082e1b

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

common/modules/finder.jsm

+27-5
Original file line numberDiff line numberDiff line change
@@ -405,18 +405,40 @@ var RangeFind = Class("RangeFind", {
405405
get flags() { return this.matchCase ? "" : "i"; },
406406

407407
get selectedRange() {
408-
let win = this.store.focusedFrame && this.store.focusedFrame.get() || this.content;
409-
408+
let win = this.store.focusedFrame && this.store.focusedFrame.get(
409+
) || this.content;
410410
let selection = win.getSelection();
411-
return (selection.rangeCount ? selection.getRangeAt(0) : this.ranges[0].range).cloneRange();
411+
let range = null;
412+
if (selection.rangeCount) {
413+
range = selection.getRangeAt(0);
414+
this.show_selection_in_editing_node(range, false);
415+
} else {
416+
range = this.ranges[0].range;
417+
}
418+
return range.cloneRange();
412419
},
413420
set selectedRange(range) {
414421
this.range.selection.removeAllRanges();
415422
this.range.selection.addRange(range);
416423
this.range.selectionController.scrollSelectionIntoView(
417424
this.range.selectionController.SELECTION_NORMAL, 0, false);
418-
419-
this.store.focusedFrame = util.weakReference(range.startContainer.ownerDocument.defaultView);
425+
this.show_selection_in_editing_node(range, true);
426+
this.store.focusedFrame = util.weakReference(
427+
range.startContainer.ownerDocument.defaultView);
428+
},
429+
430+
show_selection_in_editing_node: function(range, is_selected) {
431+
for (let node = range.startContainer; node; node = node.parentNode) {
432+
if (node instanceof Ci.nsIDOMNSEditableElement) {
433+
let sel = node.editor.selectionController.getSelection(
434+
Ci.nsISelectionController.SELECTION_IME_SELECTEDRAWTEXT);
435+
sel.removeAllRanges();
436+
if (is_selected) {
437+
sel.addRange(range);
438+
}
439+
break;
440+
}
441+
}
420442
},
421443

422444
cancel: function cancel() {

0 commit comments

Comments
 (0)