func (m *Menu) insertAction(action *Action, visibleChanged bool) (err error) { if !visibleChanged { action.addChangedHandler(m) defer func() { if err != nil { action.removeChangedHandler(m) } }() } if !action.Visible() { return } index := m.actions.indexInObserver(action) var mii win.MENUITEMINFO m.initMenuItemInfoFromAction(&mii, action) if !win.InsertMenuItem(m.hMenu, uint32(index), true, &mii) { return newError("InsertMenuItem failed") } menu := action.menu if menu != nil { menu.hWnd = m.hWnd } if m.hWnd != 0 { win.DrawMenuBar(m.hWnd) } return }
func (mw *MainWindow) SetVisible(visible bool) { if visible { win.DrawMenuBar(mw.hWnd) if mw.clientComposite.layout != nil { mw.clientComposite.layout.Update(false) } } mw.FormBase.SetVisible(visible) }
func (m *Menu) removeAction(action *Action, visibleChanged bool) error { index := m.actions.indexInObserver(action) if !win.RemoveMenu(m.hMenu, uint32(index), win.MF_BYPOSITION) { return lastError("RemoveMenu") } if !visibleChanged { action.removeChangedHandler(m) } if m.hWnd != 0 { win.DrawMenuBar(m.hWnd) } return nil }