Hi Clive and Paul,
Working on errors after lost connections has been on my radar lately. I've fixed a few of these kinds of problems in 14.0, and have more in store for first beta after that, and there are a few more that I am still working on.
I have definitely heard reports of the "long time to notice a lost connection" problem, but for me that's an elusive one to reproduce. My lost connections always happen quickly. What causes your disconnects? @paul.woolcock mentioned network gitches, is that all it is or do you also have timeouts in place (ie profiles, or some kind of non-database timeout) that I can set up here to try to reproduce the hang? We've tried pulling network cables, etc, but as I said, for me, the Toad (really the Oracle client) always notices quickly.
Paul, I like your idea about Workspaces. Do you save your passwords in the login window? If you did, Toad would make those connections automatically as the workspace loads. I can reproduce the problem about workspaces not continuing to load if a connection doesn't happen. Toad can't load windows without a connection, but I could at least let it move on to windows of other connections in your workspace if one connection fails. I could also change it to make all of the connections up front and then load the windows, so that if you do have to enter passwords, they'll all be at one time rather than spaced out as the windows load.
By the way, one thing you can do that may help reconnects go faster (it won't affect hangs the first time Toad tries to run a query when connection is lost):
In Options -> Oracle -> Transactions. Set "on Test/Reconnect" to "always disconnect and reconnect". And set "When closing connections" to "Just disconnect" (Oracle docs say that a commit is automatically performed in this case for normal disconnects).
Also, you may be able to prevent timeouts in the first place by opening the "transactions" window (toolbar icon next to commit/rollback, with a question mark on it) and leaving it open while you work. Set it to auto-refresh, and then a query will run every so often in the background, hopefully keeping your session alive.