@@ -405,18 +405,40 @@ var RangeFind = Class("RangeFind", {
405
405
get flags ( ) { return this . matchCase ? "" : "i" ; } ,
406
406
407
407
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 ;
410
410
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 ( ) ;
412
419
} ,
413
420
set selectedRange ( range ) {
414
421
this . range . selection . removeAllRanges ( ) ;
415
422
this . range . selection . addRange ( range ) ;
416
423
this . range . selectionController . scrollSelectionIntoView (
417
424
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
+ }
420
442
} ,
421
443
422
444
cancel : function cancel ( ) {
0 commit comments