method split_active_view orientation =
match topwin#active_view with
None -> ()
| Some v1 ->
match self#tab_of_contents (`View v1) with
None -> ()
| Some n ->
let (wl,_) = List.nth tabs n in
match v1#dup topwin with
None -> ()
| Some v2 ->
let gp = new gui_paned topwin orientation () in
gp#set_on_label_change (self#set_tab_label (`Paned gp));
gp#set_on_destroy (self#on_tab_destroy (`Paned gp));
nb#remove_page n;
let rec iter m = function
[] -> []
| (wl,`View v') :: q when n = m ->
(wl, `Paned gp) :: q
| h :: q ->
h :: (iter (m+1) q)
in
tabs <- iter 0 tabs;
ignore(nb#insert_page ~tab_label: wl#coerce ~pos: n gp#paned#coerce);
init_view topwin v2;
gp#set_children_views v1 v2;
self#goto_page n;
v2#grab_focus;