- match first_selected, elem with
- None, _
- | _, None -> selection_changed None
- | Some first', Some last' ->
- selection_changed
- (Some (new Gdome.element_of_node (common_ancestor (first' :> Gdome.node) (last' :> Gdome.node)))))) ;
+ let new_selected =
+ match first_selected, elem with
+ Some first', Some last' ->
+ (Some (new Gdome.element_of_node (common_ancestor (first' :> Gdome.node) (last' :> Gdome.node))))
+ | _ -> None
+ in
+ if not (same_element root_selected new_selected) then
+ begin
+ self#set_selection new_selected ;
+ selection_changed new_selected
+ end)) ;