void WMenu::select(int index, bool changePath) { int last = current_; setCurrent(index); selectVisual(current_, changePath, true); if (index != -1) { WMenuItem *item = itemAt(index); item->show(); item->loadContents(); DeletionTracker guard(this); if (changePath && emitPathChange_) { WApplication *app = wApp; app->internalPathChanged().emit(app->internalPath()); if (guard.deleted()) return; emitPathChange_ = false; } if (last != index) { item->triggered().emit(item); if (!guard.deleted()) { // item may have been deleted too if (ul()->indexOf(item) != -1) itemSelected_.emit(item); else select(-1); } } } }
void WMenu::select(int index, bool changePath) { int last = current_; setCurrent(index); selectVisual(current_, changePath, true); if (index != -1) { WMenuItem *item = itemAt(index); item->show(); item->loadContents(); if (changePath && emitPathChange_) { WApplication *app = wApp; app->internalPathChanged().emit(app->internalPath()); emitPathChange_ = false; } if (last != index) { item->triggered().emit(item); itemSelected_.emit(item); } } }