We should be doing this for anything window-modal anyway; even though the framework still has to take care of handling input events against main window as "switch focus to sheet and play NSBeep()", KDE's window manager decorates this nicely.
I think it's not window manager's duty to actually block events (GNUstep apps want to play GNUstep's NSBeep() for example), and I think I have witnessed KDE's WM not doing so. WM may help in blocking focus change, but I'm not sure if even that is the case. (*sigh* I guess a test program is in order :-))
Sheets are interesting compared to usual modal dialogs precisely because they also follow the window around. I went again through the EWMH spec, and it doesn't seem to specify a hint that would say "this window should be attached to this other window". I may be wrong, and some WM may interpret the hint atom you mentioned (_NET_WM_STATE_MODAL) as "please follow the WM_TRANSIENT_FOR window around".
I would suggest that GNUstep sheets should still be special compared to other GNUstep window-modal items by not having decorations, by being placed just below titlebar of the parent, and by following the parent around, even if that means having ugly framework code in absence of WM support. And a WM that comes out of GNUstep or is related to it could introduce an additional GNUstep-specific window property that would kindly ask the window manager to assist in moving the sheet around (once it has been placed).
Hi,
Just to give my 2c: the EWMH spec has window-modal dialogs:
"_NET_WM_STATE_MODAL indicates that this is a modal dialog box. If the WM_TRANSIENT_FOR hint is set to another toplevel window, the dialog is modal for that window; if WM_TRANSIENT_FOR is not set or set to the root window the dialog is modal for its window group." -
http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html
Not sure how widely that is implemented in WM's. But I'd vote for keeping sheets as windows in the backend, and passing the information to the backend that it is a sheet and which window is the parent.
There would still need to be emulation of "window-modalness" in gui since not all WM's (including win32) will implement it.
I'm not sure how close this is to what we currently have!
Cheers,
Eric