[wxruby-users] Menu.delete returned "wrong # of argument" on Mac

Alex Fenton alex at pressure.to
Fri Jan 23 07:27:25 EST 2009


Hi Zhimin

Zhimin Zhan wrote:
> I was trying to delete menu items in a submenu, the code worked fine on
> Windows, but failed on Mac.
>
> I modified the sample bigdemo/wxMenu.rbw,
>
>   def menu_101(event)
>        @log.write_text("Welcome to Mercury")
>        # New here, change submenu to @submenu in initialize()
>        @submenu.get_menu_items.each do |menu_item|
>             @submenu.delete(menu_item)
>          end
>    end
>
> Error:
> wxMenu.rbw:140:in `delete': Wrong arguments for overloaded method
> 'wxMenu.Delete'. (ArgumentError)
> Possible C/C++ prototypes are:
>     void wxMenu.Delete(int id)
>     void wxMenu.Delete(wxMenuItem *item)
>   

Thanks for the report and sample code. I tried this out with 1.9.9 and I 
get an error (although a slightly different one).

I tried it with SVN HEAD (with ruby 1.8.6 and 1.9.1) and it works 
correctly, no error is raised. I believe it may have been fixed by a 
change I applied following this previous thread, so that MenuItems are 
correctly preserved from GC:

http://rubyforge.org/pipermail/wxruby-users/2009-January/004400.html

So the problem should already be resolved by the next release.

thanks again
alex





More information about the wxruby-users mailing list