bool EventTarget::fireEventListeners(Event& event) { ASSERT_WITH_SECURITY_IMPLICATION(!NoEventDispatchAssertion::isEventDispatchForbidden()); ASSERT(event.isInitialized()); EventTargetData* d = eventTargetData(); if (!d) return true; EventListenerVector* legacyListenersVector = nullptr; const AtomicString& legacyTypeName = legacyType(event); if (!legacyTypeName.isEmpty()) legacyListenersVector = d->eventListenerMap.find(legacyTypeName); EventListenerVector* listenersVector = d->eventListenerMap.find(event.type()); if (listenersVector) fireEventListeners(event, d, *listenersVector); else if (legacyListenersVector) { AtomicString typeName = event.type(); event.setType(legacyTypeName); fireEventListeners(event, d, *legacyListenersVector); event.setType(typeName); } return !event.defaultPrevented(); }
bool EventTarget::fireEventListeners(Event* event) { ASSERT(!EventDispatchForbiddenScope::isEventDispatchForbidden()); ASSERT(event && !event->type().isEmpty()); EventTargetData* d = eventTargetData(); if (!d) return true; EventListenerVector* legacyListenersVector = nullptr; AtomicString legacyTypeName = legacyType(event); if (!legacyTypeName.isEmpty()) legacyListenersVector = d->eventListenerMap.find(legacyTypeName); EventListenerVector* listenersVector = d->eventListenerMap.find(event->type()); if (listenersVector) { fireEventListeners(event, d, *listenersVector); } else if (legacyListenersVector) { AtomicString unprefixedTypeName = event->type(); event->setType(legacyTypeName); fireEventListeners(event, d, *legacyListenersVector); event->setType(unprefixedTypeName); } Editor::countEvent(executionContext(), event); countLegacyEvents(legacyTypeName, listenersVector, legacyListenersVector); return !event->defaultPrevented(); }
bool EventTarget::fireEventListeners(Event* event) { ASSERT(!EventDispatchForbiddenScope::isEventDispatchForbidden()); ASSERT(event && !event->type().isEmpty()); EventTargetData* d = eventTargetData(); if (!d) return true; EventListenerVector* legacyListenersVector = 0; AtomicString legacyTypeName = legacyType(event); if (!legacyTypeName.isEmpty()) legacyListenersVector = d->eventListenerMap.find(legacyTypeName); EventListenerVector* listenersVector = d->eventListenerMap.find(event->type()); if (!RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled() && (event->type() == EventTypeNames::animationiteration || event->type() == EventTypeNames::animationend || event->type() == EventTypeNames::animationstart) // Some code out-there uses custom events to dispatch unprefixed animation events manually, // we can safely remove all this block when cssAnimationUnprefixedEnabled is always on, this // is really a special case. DO NOT ADD MORE EVENTS HERE. && event->interfaceName() != EventNames::CustomEvent) listenersVector = 0; if (listenersVector) { fireEventListeners(event, d, *listenersVector); } else if (legacyListenersVector) { AtomicString unprefixedTypeName = event->type(); event->setType(legacyTypeName); fireEventListeners(event, d, *legacyListenersVector); event->setType(unprefixedTypeName); } Editor::countEvent(executionContext(), event); countLegacyEvents(legacyTypeName, listenersVector, legacyListenersVector); return !event->defaultPrevented(); }
void Stat::Load( moPropBagRef& propBag ) { moPropStringRef id ( f_idName ); moPropStringRef abilityId ( f_abilityIdName ); moPropIntRef legacyId ( f_legacyIdName ); moPropIntRef legacyType ( f_legacyTypeName ); moPropStringRef name ( f_nameName ); moPropIntRef dice ( f_diceName ); moPropIntRef faces ( f_facesName ); moPropIntRef modifier ( f_modifierName ); moPropIntRef deleted ( f_deletedName ); moPropStringRef accel ( f_accelName ); moPropIntRef showOnToolbar ( f_showOnToolbarName ); moPropIntRef showOnHUD ( f_showOnHUDName ); moPropIntRef showMonsterOnHUD ( f_showMonsterOnHUDName ); moPropIntRef internal ( f_internalName ); moPropIntRef ability ( f_abilityName ); moPropIntRef order ( f_orderName ); id .Link( propBag ); abilityId .Link( propBag ); legacyId .Link( propBag ); legacyType .Link( propBag ); name .Link( propBag ); dice .Link( propBag ); faces .Link( propBag ); modifier .Link( propBag ); deleted .Link( propBag ); accel .Link( propBag ); showOnToolbar .Link( propBag ); showOnHUD .Link( propBag ); showMonsterOnHUD .Link( propBag ); internal .Link( propBag ); ability .Link( propBag ); order .Link( propBag ); if( id.HasProp() ) { f_id = moName( static_cast<moWCString>(id) ); } else if( legacyId.HasProp() && legacyType.HasProp() ) { f_legacyId = legacyId; f_legacyType = legacyType; } else { throw moError( "Bad Stat data for object!" ); } if( abilityId.HasProp() ) { f_abilityId = moName( static_cast<moWCString>(abilityId) ); } else { f_abilityId = moName( "UNNAMED" ); } f_name = static_cast<moWCString>(name).c_str(); f_dice = dice; f_faces = faces; f_modifier = modifier; f_deleted = deleted? true: false; // if( showMonsterOnHUD.HasProp() && showOnToolbar.HasProp() && showOnHUD.HasProp() ) { f_showOnToolbar = showOnToolbar? true: false; f_showOnHUD = showOnHUD? true: false; f_showMonsterOnHUD = showMonsterOnHUD? true: false; } // if( accel.HasProp() ) { // This is a bug in moProps--if a blank string, then we should have a property // f_accel = static_cast<moWCString>(accel).c_str(); } if( internal.HasProp() ) f_internal = internal; if( ability.HasProp() ) f_ability = ability; if( order.HasProp() ) f_order = order; if( f_legacyId != -1 ) { f_showMonsterOnHUD = f_showOnToolbar = f_showOnHUD = f_internal = f_ability = false; auto statMgr = StatManager::Instance().lock(); assert(statMgr); // We must assign the custom stat value for later editing in the StatEditor. // The idea is that certain stats are fixed, immutable, but others, like // Spot/Listen/Will are custom, plus new stats are also. // if( f_name == "Spot" ) { f_id = statMgr->spotId(); f_showOnToolbar = true; f_accel = "s"; } else if( f_name == "Listen" ) { f_id = statMgr->listenId(); f_showOnToolbar = true; f_accel = "l"; } else if( f_name == "Will" ) { f_id = statMgr->willId(); f_showOnToolbar = true; f_accel = "w"; } else if( f_name == "Init" ) { f_id = statMgr->initId(); f_internal = true; } else if( f_name == "Hit Points" ) { f_id = statMgr->hpId(); f_internal = true; } else if( f_name == "Level" ) { f_id = statMgr->levelId(); f_internal = true; } #ifdef DEBUG std::cerr << "Legacy Id: " << f_legacyId << ", Legacy Type: " << f_legacyType << ", ID name= " << f_name.c_str() << ", NEW ID=" << moWCString(moName(f_id)).c_str() << std::endl; #endif } f_statChanged.emit(); }