On 17 Oct 2008, at 15:57, Jason Coco wrote:


On Oct 17, 2008, at 06:03 , Gerriet M. Denkmann wrote:


I have an app which overrides -[NSWindow miniaturize:] in a category (to avoid crowding the dock).
Works perfectly, but...

If this window being minimized has a sheet attached (attachedSheet is non-nil) this will be lost on deminiaturizing. But the modal loop is still running, waiting for some button to be pressed on the now invisible sheet.
In this case Force Quit is the only way out. Not very nice.

So, what can be done?
1. On miniaturize simulate a click on the "Cancel" button of the sheet. But how?

If you have a reference to the cancel button, you can send the performClick:(id)sender message to it on miniaturize...

Well, generally I have not.
E.g. sometimes someone (NSDocumentController?) runs a sheet stating that it did not know where to save, with the subtitle: "You can specify where to save it." and buttons: Cancel, Save As...


2. On deminiaturize reattach this sheet. But again: how?

In this case, when your miniaturization method is invoked, check to see if you are in the modal loop. If you are, abort the loop, set a state variable (probably some private ivar) and miniaturize. When you de-miniaturize, check the state var and if
set, display the sheet and start the modal loop again...

I don't see how I could do this, when the sheet is run from a class not made by me (like NSDocumentController). I messed around with abortModal, saving the sheet and then in de- miniaturize redisplay it with makeKeyAndOrderFront, but did not have any success.


3. (don't like this very much) refuse to miniaturize if a sheet is open.
So this still has to be my current workaround.


Kind regards,

Gerriet.

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to