#720: dynamically defined method called by menu items bug -------------------------------------+-------------------------------------- Reporter: mattaimone...@… | Owner: lsansone...@… Type: defect | Status: new Priority: blocker | Milestone: MacRuby 0.7 Component: MacRuby | Keywords: -------------------------------------+-------------------------------------- Here is a reduction of the bug encountered when a menu item calls a dynamically defined method.
Run the following code and click on one of the two first menu items to reproduce the bug. {{{ framework 'AppKit' app = NSApplication.sharedApplication class ItemDelegate def define_actions(actions) actions.each do |command| self.class.send(:define_method, command) do |sender| puts command end end end def quit(sender) exit end end @menu = NSMenu.alloc.init actions = ['test', 'test2'] menu_delegate = ItemDelegate.new menu_delegate.define_actions(actions) actions.each do |action| item = @menu.addItemWithTitle(action, action: action, keyEquivalent: "") item.target = menu_delegate end item = @menu.addItemWithTitle("Quit", action: 'quit:', keyEquivalent: "q") item.toolTip = "Click to close this App" item.target = menu_delegate bar = NSStatusBar.systemStatusBar.statusItemWithLength(NSSquareStatusItemLength) bar.title = "test" bar.menu = @menu bar.highlightMode = true app.run }}} http://gist.github.com/403462 {{{ 2010-05-16 23:15:19.037 macruby[29001:903] HIToolbox: ignoring exception '/Users/mattetti/bug.rb:1:in `<main>': wrong number of arguments (5393856 for 1) (ArgumentError) ' that raised inside Carbon event dispatch ( 0 CoreFoundation 0x00007fff86dbad24 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x00007fff851440f3 objc_exception_throw + 45 2 libmacruby.dylib 0x0000000100160a4f rb_vm_raise + 335 3 libmacruby.dylib 0x0000000100045cf9 rb_exc_raise + 9 4 libmacruby.dylib 0x0000000100044234 rb_raise + 308 5 libmacruby.dylib 0x0000000100148cf8 rb_vm_block_eval2 + 2104 6 ??? 0x0000000101101380 0x0 + 4312798080 7 AppKit 0x00007fff8324d8ea -[NSApplication sendAction:to:from:] + 95 8 AppKit 0x00007fff83271e5a -[NSMenuItem _corePerformAction] + 365 9 AppKit 0x00007fff83271bc4 -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 121 10 AppKit 0x00007fff834f593d -[NSMenu _internalPerformActionForItemAtIndex:] + 35 11 AppKit 0x00007fff833a7729 -[NSCarbonMenuImpl _carbonCommandProcessEvent:handlerCallRef:] + 136 12 AppKit 0x00007fff832543b0 NSSLMMenuEventHandler + 321 13 HIToolbox 0x00007fff85664b57 _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 1002 14 HIToolbox 0x00007fff856640a6 _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec + 395 15 HIToolbox 0x00007fff85681d85 SendEventToEventTarget + 45 16 HIToolbox 0x00007fff856b0e61 _ZL18SendHICommandEventjPK9HICommandjjhPKvP20OpaqueEventTargetRefS5_PP14OpaqueEventRef + 387 17 HIToolbox 0x00007fff856ddbf6 SendMenuCommandWithContextAndModifiers + 56 18 HIToolbox 0x00007fff856ddbae SendMenuItemSelectedEvent + 101 19 HIToolbox 0x00007fff856ddabe _ZL19FinishMenuSelectionP13SelectionDataP10MenuResultS2_ + 150 20 HIToolbox 0x00007fff857e6acb _ZL19PopUpMenuSelectCoreP8MenuData5PointdS1_tjPK4RecttjS4_S4_PK10__CFStringPP13OpaqueMenuRefPt + 1618 21 HIToolbox 0x00007fff857e6e24 _HandlePopUpMenuSelection7 + 665 22 AppKit 0x00007fff833a46db _NSSLMPopUpCarbonMenu3 + 3720 23 AppKit 0x00007fff835d41b5 -[NSStatusBarButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 162 24 AppKit 0x00007fff832d7c59 -[NSControl mouseDown:] + 624 25 AppKit 0x00007fff831f1f1b -[NSWindow sendEvent:] + 5409 26 AppKit 0x00007fff835d4f54 -[NSStatusBarWindow sendEvent:] + 68 27 AppKit 0x00007fff83127662 -[NSApplication sendEvent:] + 4719 28 AppKit 0x00007fff830be0aa -[NSApplication run] + 474 29 ??? 0x0000000101101ac7 0x0 + 4312799943 30 libmacruby.dylib 0x000000010014b5c0 rb_vm_dispatch + 3184 31 ??? 0x0000000101100834 0x0 + 4312795188 32 libmacruby.dylib 0x000000010015f35f rb_vm_run + 351 33 libmacruby.dylib 0x0000000100045f59 ruby_run_node + 73 34 macruby 0x0000000100000d28 main + 152 35 macruby 0x0000000100000c88 start + 52 ) }}} (tested with MacRuby 0.6 final) -- Ticket URL: <http://www.macruby.org/trac/ticket/720> MacRuby <http://macruby.org/> _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel