int QMenuData::insertAny( const QString *text, const QPixmap *pixmap, QPopupMenu *popup, const QIconSet* iconset, int id, int index, QWidget* widget, QCustomMenuItem* custom ) { if ( index < 0 || index > (int) mitems->count() ) // append index = mitems->count(); if ( id < 0 ) // -2, -3 etc. id = get_seq_id(); register QMenuItem *mi = new QMenuItem; CHECK_PTR( mi ); mi->ident = id; if ( widget != 0 ) { mi->widget_item = widget; mi->is_separator = !widget->isFocusEnabled(); } else if ( custom != 0 ) { mi->extra()->custom_item = custom; mi->is_separator = custom->isSeparator(); } else if ( text == 0 && pixmap == 0 && popup == 0 ) { mi->is_separator = TRUE; // separator } else { mi->text_data = text?*text:QString::null; mi->accel_key = Qt::Key_unknown; if ( pixmap ) mi->pixmap_data = new QPixmap( *pixmap ); if ( (mi->popup_menu = popup) ) menuInsPopup( popup ); if ( iconset ) mi->iconset_data = new QIconSet( *iconset ); } mitems->insert( index, mi ); menuContentsChanged(); // menu data changed return mi->ident; }
void QMenuData::clear() { register QMenuItem *mi = mitems->first(); while ( mi ) { if ( mi->popup_menu ) menuDelPopup( mi->popup_menu ); mitems->remove(); mi = mitems->current(); } if ( !QApplication::closingDown() ) // avoid trouble menuContentsChanged(); }
void QMenuData::removeItemAt( int index ) { if ( index < 0 || index >= (int)mitems->count() ) { #if defined(CHECK_RANGE) qWarning( "QMenuData::removeItem: Index %d out of range", index ); #endif return; } QMenuItem *mi = mitems->at( index ); if ( mi->popup_menu ) menuDelPopup( mi->popup_menu ); mitems->remove(); if ( !QApplication::closingDown() ) // avoid trouble menuContentsChanged(); }
void KMenuBar::updateMenuBarSize() { menuContentsChanged(); // trigger invalidating calculated size resize(sizeHint()); // and resize to preferred size }