method set_contents =
begin
match self#widget_opt_of_contents_opt contents with
None -> ()
| Some widget -> vbox#remove widget
end;
fun c ->
contents <- c;
match self#widget_opt_of_contents_opt c with
None -> ()
| Some widget ->
begin
match c with
| None -> ()
| Some (`View v) ->
v#set_on_destroy self#on_view_destroy;
v#set_on_label_change self#set_title
| Some (`Notebook gn) ->
gn#set_on_destroy (fun c -> self#set_contents c);
gn#set_on_label_change self#set_title
| Some (`Paned gp) ->
gp#set_on_destroy (fun c -> self#set_contents c);
gp#set_on_label_change self#set_title
end;
vbox#pack ~expand: true ~fill: true widget;
vbox#reorder_child widget ~pos: 1;
let label =
match c with
None -> ""
| Some c -> contents_grab_focus c; label_of_contents c
in
self#set_title label