+ List.assoc goal_switch goal2win ();
+ (match cicMathView#misc#parent with
+ None -> assert false
+ | Some p ->
+ (* The text widget dinamycally inserts the text in a separate
+ thread. We need to wait for it to terminate before we can
+ move the scrollbar to the end *)
+ while Glib.Main.pending()do ignore(Glib.Main.iteration false); done;
+ let w =
+ new GBin.scrolled_window
+ (Gobject.try_cast p#as_widget "GtkScrolledWindow") in
+ (* The double change upper/lower is to trigger the emission of
+ changed :-( *)
+ w#hadjustment#set_value w#hadjustment#upper;
+ w#hadjustment#set_value w#hadjustment#lower;
+ w#vadjustment#set_value w#vadjustment#lower;
+ w#vadjustment#set_value
+ (w#vadjustment#upper -. w#vadjustment#page_size));