From: Ray C. <rc...@gm...> - 2006-08-23 16:28:52
|
Hi, I've figured it out. It's got to do with the way windows are handled in ActionStep. It's been fixed. If you want to know more, read on. A window is made up of MovieClips (mcs). (Actually views are but for the sake of simplicity let's ignore that.) A menu contains windows. So when a menu (and hence the window) is created *before* NSApp is run, this takes place automatically, ie the mcs are created for you. But for your case, the windows are created *after* NSApp has started running (I assume), so they will not have their mcs created. I've changed that, so when a menu is displayed it's window is also forced to create it's own mcs. As for why you need to click it twice, apparently the display method is called when the submenu is detached. Sounds weird, huh? I've fixed this too. On 8/23/06, thomas mery <tho...@gm...> wrote: > hi all, > > I have tried to subclass NSMenu and have encountered a weird behaviour. > > I have to click twice on my main items to make the submenus appear (or have > to rollover twice on submenus that have submenus) > > here is my code so maybe someone can tell me what i am doing wrong ... > > import org.actionstep.menu.NSMenuItemCell; > import org.actionstep.menu.NSMenuView; > import org.actionstep.NSApplication; > import org.actionstep.NSException ; > import org.actionstep.NSFont; > import org.actionstep.NSMenu; > import org.actionstep.NSMenuItem; > import org.actionstep.NSWindow; > > import com.screenmatters.controllers.CategoriesController; > import com.screenmatters.controllers.SMController ; > import org.actionstep.NSPoint; > > /** > * @author tom > */ > class com.screenmatters.menu.SMMenu extends NSMenu { > > private var m_controller:CategoriesController; > > private var m_itemsArray:Object; > > public function SMMenu() { > > super(); > menuRepresentation().setHorizontal(false); > > } > > public function initWithTitle(title:String):SMMenu { > > super.initWithTitle(title); > return this; > > } > > public function > initWithController(controller:Function):SMMenu { > > m_controller = controller.getInstance(); > > return this; > > } > > public function setController(controller:Function) { > > m_controller = controller.getInstance(); > > return m_controller; > > } > > //returns menu controller > public function controller():Object { > > return m_controller; > > } > > public function populate(itemsArray:Object,menu:SMMenu) > { > > if(menu == null) { > > menu = this; > > } > > if(itemsArray.length > 0) { > > var mi:NSMenuItem; > > for(var i:Number = 0; i < itemsArray.length; i++) { > > var itemName = > itemsArray[i]['CategoryName'][0]['name']; > mi = > menu.addItemWithTitleActionKeyEquivalent (itemName); > mi.setTarget(this); > mi.setAction("traceMenuItem"); > > if(itemsArray[i]['children'].length > 0) { > > var submenu = (new SMMenu()).initWithTitle("Menu for " > + itemName); > menu.setSubmenuForItem(submenu,mi); > > populate(itemsArray[i]['children'],submenu); > > } > > } > > } > > } > } > > > > TIA > > thomas > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > _______________________________________________ > actionstep-core mailing list > act...@li... > https://lists.sourceforge.net/lists/listinfo/actionstep-core > > > -- Cheers, Ray Chuan |