Esempio n. 1
0
        internal void _resolve(GestureArenaMember member, GestureDisposition disposition)
        {
            if (this._resolved)
            {
                return;
            }

            if (disposition == GestureDisposition.rejected)
            {
                this._members.Remove(member);
                member.rejectGesture(this._pointer);
                if (this._members.isEmpty())
                {
                    this._entry.resolve(disposition);
                }
            }
            else
            {
                this._winner = this._winner ?? this._owner.captain ?? member;
                this._entry.resolve(disposition);
            }
        }
Esempio n. 2
0
        internal void _resolve(GestureArenaMember member, GestureDisposition disposition)
        {
            if (_resolved)
            {
                return;
            }

            if (disposition == GestureDisposition.rejected)
            {
                _members.Remove(member);
                member.rejectGesture(_pointer);
                if (_members.isEmpty())
                {
                    _entry.resolve(disposition);
                }
            }
            else
            {
                D.assert(disposition == GestureDisposition.accepted);
                _winner = _winner ?? _owner.captain ?? member;
                _entry.resolve(disposition);
            }
        }
Esempio n. 3
0
        internal void _resolve(int pointer, GestureArenaMember member, GestureDisposition disposition)
        {
            _GestureArena state;

            if (!this._arenas.TryGetValue(pointer, out state))
            {
                return;
            }

            D.assert(this._debugLogDiagnostic(pointer,
                                              () => $"{(disposition == GestureDisposition.accepted ? "Accepting" : "Rejecting")}: {member}"));

            D.assert(state.members.Contains(member));
            if (disposition == GestureDisposition.rejected)
            {
                state.members.Remove(member);
                member.rejectGesture(pointer);
                if (!state.isOpen)
                {
                    this._tryToResolveArena(pointer, state);
                }
            }
            else
            {
                if (state.isOpen)
                {
                    state.eagerWinner = state.eagerWinner ?? member;
                }
                else
                {
                    D.assert(this._debugLogDiagnostic(pointer,
                                                      () => $"Self-declared winner: {member}"));
                    this._resolveInFavorOf(pointer, state, member);
                }
            }
        }