Mark, I've managed to get this working now by implementing the code to restore the old position in the initDialog. But I found that I have to run the restore process as a separate thread, otherwise it affects the drawing of the initial tab which ends up partly blank.

The initDialog() method of all the ooDialog dialog classes, does absolutely nothing.  Forwarding the initDialog method to its super class is not needed in any way, and does absolutely nothing.  

The sole purpose of the method is to be over-ridden by your subclasses.  It allows the ooDialog framework to invoke the method, of your subclass, at the proper point in time for you to do any initialization that needs to be done before the dialog is shown.

Here I faced a problem because I took your advice literally and removed the forward statement in a few places. But then nothing worked any more, because of my subclass structure. So even if not needed (by ooDialog) I would prefer to say that it's better to include the forward statement, even if not needed, than having it everywhere except in the class that has ooDialog as parent. It's difficult enough to keep in mind which of the init, initDialog, defineDialog, etc methods must be forward and which don't need to be. Just a matter of coding preference really.

Thanks again,