Example #1
0
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();
}
Example #2
0
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();
}
Example #3
0
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();
}
Example #4
0
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();
}