I just updated from Xojo 2014r3 to 2016r4.1. For many years I have used the following code to close a window which is listed in a menu item named Window.
Sub CloseThisWindow(closeMe As Window)
Dim i, count As Integer
Dim w As WindowMenuItem
' Count how may items are in the Window menu count = MenuBar1.Child( "WindowMenu" ).Count - 1 For i = 0 To count ' Get a menu item w = WindowMenuItem( MenuBar1.Child( "WindowMenu" ).Item( i ) ) ' If the item has the window we want to close if w.IsWindow( closeMe ) then 'Then remove that menu item MenuBar1.Child( "WindowMenu" ).Remove( i ) 'Close the window closeMe.Close ' And terminate the loop Exit End Next
Now every time I close a window the error “MenuItem cannot be cast to WindowMenuItem” occurs and the program aborts on the line
w = WindowMenuItem( MenuBar1.Child( "WindowMenu" ).Item( i ) )
This is on MacOS 10.11.6 El Capitan. If I compile with Xojo 2014r3 the code works on the same OS, so it is not the OS but something from Xojo 2016r4.1 but I am unable to determine why this fails. Anyone have any ideas?