void WEXPORT WPopupMenu::detachMenu() { /*************************************/ if( owner() ) { if( owner()->handle() ) { if( parent()->isFloatingPopup() ) { GUIDeleteMenuItem( owner()->handle(), menuId(), TRUE ); } GUIDeleteMenuItem( owner()->handle(), menuId(), FALSE ); } } setOwner( NULL ); }
static void EnableMDIMenus( gui_window *root, bool enable ) { GUIEnableMDIActions( enable ); if( enable ) { if( GUIMDIMenuID != NO_SELECT && GUIGetMenuPopupCount( root, GUIMDIMenuID ) != 0 ){ GUIAppendMenuToPopup( root, GUIMDIMenuID, MDISecondSepMenu, false ); } } else { GUIDeleteMenuItem( root, GUI_MDI_SECOND_SEPARATOR, false ); } }
void NullPopupMenu( gui_menu_struct *menu ) { int i,j; gui_menu_struct *curr,*sub; if( WndMain == NULL ) return; curr = WndMainMenuPtr; for( i = 0; i < WndNumMenus; ++i, ++curr ) { if( !( curr->style & WND_MENU_POPUP ) ) continue; if( curr->child != menu ) continue; sub = curr->child; for( j = 0; j < curr->num_child_menus; ++j ) { GUIDeleteMenuItem( WndMain->gui, sub->id, FALSE ); ++sub; } curr->child = NULL; curr->num_child_menus = 0; break; } }
extern void WndAddPopupMenu( a_window *wnd ) { int i,j; gui_menu_struct *curr,*sub; int max; if( WndMain == NULL ) return; curr = WndMainMenuPtr; max = CalcMaxId( WndMainMenuPtr, WndNumMenus ); for( i = 0; i < WndNumMenus; ++i ) { if( curr->style & WND_MENU_POPUP ) { sub = curr->child; for( j = 0; j < curr->num_child_menus; ++j ) { GUIDeleteMenuItem( WndMain->gui, sub->id, FALSE ); ++sub; } if( wnd->popupmenu == NULL ) { curr->num_child_menus = 0; curr->child = NULL; } else { curr->num_child_menus = wnd->num_popups; curr->child = wnd->popupmenu; } WndPopupMenuPtr = curr; sub = curr->child; for( j = 0; j < curr->num_child_menus; ++j ) { if( ( sub->style & GUI_SEPARATOR ) && ( sub->id == 0 ) ) { sub->id = ++max; } GUIAppendMenuToPopup( WndMain->gui, curr->id, sub, FALSE ); ++sub; } break; } ++curr; } }
void MDIDelete( gui_window *wnd ) { gui_window *root; int index, offset; int i, num_menu_windows; if( wnd == Root ) { Root = NULL; } if( Root == NULL ) { return; } root = GUIGetRootWindow(); // This check will make sure that windows that are not children of // the root window are ignored if( GUIGetParentWindow( wnd ) != root ) { return; } index = GetIndex( wnd ); if( NumMDIWindows == ( MAX_NUM_MDI_WINDOWS + 1 ) ) { GUIDeleteMenuItem( root, GUI_MDI_MORE_WINDOWS, false ); } NumMDIWindows--; if( index != -1 ) { if( index == NumMDIWindows ) { GUIDeleteMenuItem( root, MDIWIN2ID( index ), false ); MDIWindows[index] = NULL; } else { // delete all MDI menu items from this index on num_menu_windows = NumMDIWindows; if( num_menu_windows > MAX_NUM_MDI_WINDOWS - 1 ) num_menu_windows = MAX_NUM_MDI_WINDOWS - 1; for( i = index; i < num_menu_windows; i++ ) { GUIDeleteMenuItem( root, MDIWIN2ID( i ), false ); MDIWindows[i] = MDIWindows[i + 1]; } GUIDeleteMenuItem( root, MDIWIN2ID( num_menu_windows ), false ); MDIWindows[num_menu_windows] = NULL; // re-add all menu items from index on offset = GUIGetMenuPopupCount ( root, GUIMDIMenuID ); if( NumMDIWindows > MAX_NUM_MDI_WINDOWS ) { offset--; } for( i = index; i < num_menu_windows; i++ ) { InsertMenuForWindow( root, i, offset + i - index ); if( CurrMDIWindow == i ) { CurrMDIWindow--; if( CurrMDIWindow < 0 ) { CurrMDIWindow = -1; } else { GUICheckMenuItem( root, MDIWIN2ID( CurrMDIWindow ), true, false ); } } } // Fill in the last spot in the MDIWindows array and insert it // after the 8th element if( NumMDIWindows >= MAX_NUM_MDI_WINDOWS ) { MDIWindows[MAX_NUM_MDI_WINDOWS - 1] = FindNextMDIMenuWindowNotInArray( MDIWindows[MAX_NUM_MDI_WINDOWS - 2], wnd ); if( MDIWindows[MAX_NUM_MDI_WINDOWS - 1] != NULL ) { offset = GUIGetMenuPopupCount( root, GUIMDIMenuID ) - 1; if( NumMDIWindows > MAX_NUM_MDI_WINDOWS ) { offset--; } InsertMenuForWindow( root, MAX_NUM_MDI_WINDOWS - 1, offset ); } } } } if( NumMDIWindows <= 0 ) { EnableMDIMenus( root, false ); CurrMDIWindow = -1; } }