[Mono-osx] Need a replacement for NSWindow.Close()

Geoff Norton gnorton at novell.com
Tue Mar 29 11:10:17 EDT 2011


I think you're confused what .Close () does.  Since it specifically calls out it does not call WillClose either:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html

Anyways, the issue with .Close is it does a .Release under the hood, that we aren't aware of, leading to a double free.

-g

On 2011-03-29, at 10:58 AM, Maxi Combina wrote:

> .OrderOut() and .Close() don't seem to be equivallent:
> If I use Window.OrderOut() then the Window.WillClose() is not dispatched.
> I can not invoke PerformClose() since I use Borderless windows.
> 
> I found 2 ideas, please advise me on those:
> 1) To have my own events: I use .OrderOut() and launch a custom event, to replace WillClose().
> 2) I code:
>    OrderOut();
>    StyleMask = Titled | Closable; // enable PerformClose()
>    PerformClose(this) // Close the already hidden window
> 
> Or maybe I should refactor.
> 
> Is it just me that finds the missing .Close() a little odd?
> 
> Bests,
> Maxi
> 
> 2011/3/29 Geoff Norton <gnorton at novell.com>
> Use .OrderOut ()
> 
> -g
> 
> On 2011-03-29, at 5:54 AM, Maxi Combina wrote:
> 
>> Hello,
>> 
>> I have a Borderless window which can not be closed with PerformClose(), since this method (as per Apple documentation) "simulates the user clicking the close button" and "if the windows doesn't ahve a close button or can't be closed [...], the system emits the alert sound".
>> For closing a window I used the "Close()" method. But in the current src/appkit.cs the "Close()" is commented out:
>> 
>> /* NSWindow.Close by default calls [window release]
>>                  * This will cause a double free in our code since we're not aware of this
>>                  * and we end up GCing the proxy eventually and sending our own release
>>                  * Removing this method for now
>>                 [Export ("close")]
>>                 void Close ();
>>                  */
>> 
>> I am looking for a way of closing (and releasing) the window.
>> Any ideas?
>> 
>> Thanks!
>> maxi
>> 
>> -- 
>> Maxi Combina
>> Cell:+1 408 300 3614
>> Tel:  +1 408 524 1579
>> 440 N. Wolfe Road. Sunnyvale. CA. 94085. USA
>> 
>> www.PasswordBank.com
>> 
>> This message and its attachments are sent from PasswordBank, Inc. and may contain information that is
>> confidential. If you are not the intended recipient, you are prohibited from printing, copying, forwarding or
>> saving them. Please delete the message and attachments without printing, copying, forwarding or saving
>> them, and notify the sender immediately. Message transmission is not guaranteed to be secure.
>> 
>> _______________________________________________
>> Mono-osx mailing list
>> Mono-osx at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-osx
> 
> 
> 
> 
> -- 
> Maxi Combina
> Cell:+1 408 300 3614
> Tel:  +1 408 524 1579
> 440 N. Wolfe Road. Sunnyvale. CA. 94085. USA
> 
> www.PasswordBank.com
> 
> This message and its attachments are sent from PasswordBank, Inc. and may contain information that is
> confidential. If you are not the intended recipient, you are prohibited from printing, copying, forwarding or
> saving them. Please delete the message and attachments without printing, copying, forwarding or saving
> them, and notify the sender immediately. Message transmission is not guaranteed to be secure.
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-osx/attachments/20110329/98c613a8/attachment.html 


More information about the Mono-osx mailing list