void PopupContainer::getPopupMenuInfo(WebPopupMenuInfo* info) { const Vector<PopupItem*>& inputItems = popupData(); WebVector<WebMenuItemInfo> outputItems(inputItems.size()); for (size_t i = 0; i < inputItems.size(); ++i) { const PopupItem& inputItem = *inputItems[i]; WebMenuItemInfo& outputItem = outputItems[i]; outputItem.label = inputItem.label; outputItem.enabled = inputItem.enabled; outputItem.textDirection = toWebTextDirection(inputItem.textDirection); outputItem.hasTextDirectionOverride = inputItem.hasTextDirectionOverride; switch (inputItem.type) { case PopupItem::TypeOption: outputItem.type = WebMenuItemInfo::Option; break; case PopupItem::TypeGroup: outputItem.type = WebMenuItemInfo::Group; break; case PopupItem::TypeSeparator: outputItem.type = WebMenuItemInfo::Separator; break; } } info->itemHeight = menuItemHeight(); info->itemFontSize = menuItemFontSize(); info->selectedIndex = selectedIndex(); info->items.swap(outputItems); info->rightAligned = menuStyle().textDirection() == RTL; }
void ZLApplication::doAction(const std::string &actionId, std::size_t index) { if (index != (std::size_t)-1) { shared_ptr<ZLPopupData> data = popupData(actionId); if (!data.isNull()) { data->run(index); return; } } shared_ptr<Action> a = action(actionId); if (!a.isNull()) { a->checkAndRun(); } }