F
Fred Gibbons
Guest
This one puzzles me: Apple decree that a sheet window may not spawn a sheet window. I have seen it done, in Ircle under Puma, so the GUI does or, at least did, permit it. But it's now prohibited behaviour. But I don't understand why.
Something that I didn't realise until recently is that sheets are nothing new. For as long as OS X has been around, Windows has supported a superior version of sheets. Go into any single-process SDI Windows app (e.g. Windows Explorer or Firefox), open several windows, and open a dialog from one of them. All other "document" windows (I prefer the term "task window") are still fully accessible. Outlook Express does not work this way, which in the past I have found as an annoying surprise.
Along come Apple's sheets and we suddenly think this is a new idea! But sheets are less useful. For example, try this in Windows Explorer:
Sheets are a very restricted version of this behaviour, with time consuming animations. One advantange of sheets is that the the parent and child windows lock together, with the parent window remains movable and minimisable. But these benefits amount to naught as soon as you need a child sheet which must be shown as application modal, whereupon the dialog locks out the rest of the app.
I've been maintaining a Mac OS 9/X/Win32 app (or two) for years and I have never used sheets before -- it's never been an option. I'm contemplating using them if I can find a way to use semaphores to lock up my parent window code to simulate the normal modal dialog behaviour of the parent being frozen pending the dialog's dismissal.
But my app has dialogs that spawn dialogs that spawn dialogs. There are certainly advantages to not using sheets: most of them are not dynamic dialogs powered by a data manager and trying to open two simultaneous copies will rapidly desynchronise and mutually delete each other's view of the data. (Only those parts of the app that need to be live across all windows are live, right now). To use window-modal sheets would require a manager for every other data type and other checks to make sure you don't cause conflicts! (Above, I showed that you can open Folder Options twice in Windows Explorer. Somehow I don't think that actually using Explorer that way is wise, I doubt it has dynamic management to post updates from one window to all other open instances and you could potentially lose changes.)
But it got me wonder about how sheets should work. Why can't a sheet spawn a sheet? Is there a rule against this? Apple's typical arrogance? Is it because sheets have no title bars and people would get confused as to what the current sheet does? (No idea why sheets can't have captions... Seems logical to me, but again, Apple don't agree.)
For those who are aware that I'm also attempting to design a GUI protocol for Cy/VOS, it has interesting implications for how I permit dialog boxes to work ...
I also wonder, just out of curiosity: for how long has Windows permitted sheet-like behaviour? Since 2000? Since 98/NT 4? Since 95? It's something so natural that you don't even notice it until someone like REAL Software (with their runtime) or Microsoft (with Outlook Express) go and break it.
I wonder who had the idea first? The scary thing is that it's a perfectly natural consequence of the single-process (visual only) SDI approach Microsoft took with Windows 95. (Apple's approach is still more on the MDI side of the fence, Windows apps are more on the SDI side of the fence although both OSes use a version of single-process (visual) SDI with notable exceptions like Windows Media Player 6 which is pure SDI -- one process per window. This is very tricky and avoided for obvious reasons.)
Oh, and hello.
Something that I didn't realise until recently is that sheets are nothing new. For as long as OS X has been around, Windows has supported a superior version of sheets. Go into any single-process SDI Windows app (e.g. Windows Explorer or Firefox), open several windows, and open a dialog from one of them. All other "document" windows (I prefer the term "task window") are still fully accessible. Outlook Express does not work this way, which in the past I have found as an annoying surprise.
Along come Apple's sheets and we suddenly think this is a new idea! But sheets are less useful. For example, try this in Windows Explorer:
- Open two windows
- In one of the, go to Tools > Folder Options, File Types tab, click Advanced, then New, then Browse. You now have a local chain of five windows.
- Switch back to the other window. Note how none of the dialogs gets in the way!
- For kicks, open Tools > Folder Options from the other window too.
Sheets are a very restricted version of this behaviour, with time consuming animations. One advantange of sheets is that the the parent and child windows lock together, with the parent window remains movable and minimisable. But these benefits amount to naught as soon as you need a child sheet which must be shown as application modal, whereupon the dialog locks out the rest of the app.
I've been maintaining a Mac OS 9/X/Win32 app (or two) for years and I have never used sheets before -- it's never been an option. I'm contemplating using them if I can find a way to use semaphores to lock up my parent window code to simulate the normal modal dialog behaviour of the parent being frozen pending the dialog's dismissal.
But my app has dialogs that spawn dialogs that spawn dialogs. There are certainly advantages to not using sheets: most of them are not dynamic dialogs powered by a data manager and trying to open two simultaneous copies will rapidly desynchronise and mutually delete each other's view of the data. (Only those parts of the app that need to be live across all windows are live, right now). To use window-modal sheets would require a manager for every other data type and other checks to make sure you don't cause conflicts! (Above, I showed that you can open Folder Options twice in Windows Explorer. Somehow I don't think that actually using Explorer that way is wise, I doubt it has dynamic management to post updates from one window to all other open instances and you could potentially lose changes.)
But it got me wonder about how sheets should work. Why can't a sheet spawn a sheet? Is there a rule against this? Apple's typical arrogance? Is it because sheets have no title bars and people would get confused as to what the current sheet does? (No idea why sheets can't have captions... Seems logical to me, but again, Apple don't agree.)
For those who are aware that I'm also attempting to design a GUI protocol for Cy/VOS, it has interesting implications for how I permit dialog boxes to work ...
I also wonder, just out of curiosity: for how long has Windows permitted sheet-like behaviour? Since 2000? Since 98/NT 4? Since 95? It's something so natural that you don't even notice it until someone like REAL Software (with their runtime) or Microsoft (with Outlook Express) go and break it.
I wonder who had the idea first? The scary thing is that it's a perfectly natural consequence of the single-process (visual only) SDI approach Microsoft took with Windows 95. (Apple's approach is still more on the MDI side of the fence, Windows apps are more on the SDI side of the fence although both OSes use a version of single-process (visual) SDI with notable exceptions like Windows Media Player 6 which is pure SDI -- one process per window. This is very tricky and avoided for obvious reasons.)
Oh, and hello.