method cycle_view =
match active_view with
None -> ()
| Some v ->
match contents with
None -> ()
| Some mycontents ->
let rec iter c =
match find_container c mycontents with
None ->
begin
match c with
`Paned gp ->
begin
match gp#child1, gp#child2 with
Some c, _
| None, Some c -> contents_grab_focus c
| None, None -> ()
end
| `View v ->
(* shold not happen *)
v#grab_focus
| `Notebook nb ->
(* give focus to first view in the current tab *)
nb#grab_focus
end
| Some ((`Paned gp) as x) ->
begin
match gp#child1, gp#child2 with
| Some c1, Some c2 when id_of_contents c1 = id_of_contents c ->
contents_grab_focus c2
| _ -> iter x
end
| Some x -> iter x
in
iter (`View v)