I think you want "break" instead of "return". You can't return from a block (Proc).

-Gabriel


On Wed, Mar 30, 2011 at 7:53 AM, Martin Hawkins <martin.hawkins@gmail.com> wrote:
From what I can read in the archives, this was raised about 18 months
ago. Loosely following Matt's book, I've written the following code:
def showOpenPanel( sender)
   openPanel = NSOpenPanel.openPanel
   openPanel.setCanChooseDirectories( false)

openPanel.setShowsHiddenFiles( NSUserDefaults.standardUserDefaults.boolForKey( 'showHiddenFiles'))
   openPanel.setAllowsMultipleSelection( true)
   openPanel.beginSheetModalForWindow window, completionHandler:
Proc.new{|result|
     return if (result == NSCancelButton)
     # throws error
     }
end

The result is (on OS X 10.7, MacRuby 0.10), when the cancel button is
pressed,
uncaught Objective-C/C++ exception...
terminate called after throwing an instance of
'RoxorReturnFromBlockException*'
Program received signal:  “SIGABRT”.
sharedlibrary apply-load-rules all

Interestingly, on Lion,  the output then appears to loop:
unable to read unknown load command 0x24
unable to read unknown load command 0x26
unable to read unknown load command 0x24
unable to read unknown load command 0x26
.
.
Do you need a new ticket?
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel