ProcessInputEventArgs.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Input / ProcessInputEventArgs.cs / 1 / ProcessInputEventArgs.cs

                            using System; 
using System.Security.Permissions;
using System.Security;
using MS.Internal;
using MS.Internal.PresentationCore; 
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID; 
 
namespace System.Windows.Input
{ 
    /// 
    ///     Provides access to the input manager's staging area.
    /// 
    ///  
    ///     An instance of this class, or a derived class, is passed to the
    ///     handlers of the following events: 
    ///      
    ///         
    ///              
    ///         
    ///         
    ///             
    ///          
    ///     
    ///  
    public class ProcessInputEventArgs : NotifyInputEventArgs 
    {
        // Only we can make these.  Note that we cache and resuse instances. 
        internal ProcessInputEventArgs() {}

        ///
        /// Critical - calls a critical method base.Reset 
        ///
        [SecurityCritical] 
        internal override void Reset(StagingAreaInputItem input, InputManager inputManager) 
        {
            _allowAccessToStagingArea = true; 
            base.Reset(input, inputManager);
        }

        ///  
        ///     Pushes an input event onto the top of the staging area.
        ///  
        ///  
        ///     The input event to place on the staging area.  This may not
        ///     be null, and may not already exist in the staging area. 
        /// 
        /// 
        ///     An existing staging area item to promote the state from.
        ///  
        /// 
        ///     The staging area input item that wraps the specified input. 
        ///  
        ///
        ///     Callers must have UIPermission(PermissionState.Unrestricted) to call this API. 
        ///
        ///
        /// Critical - calls a critical method ( PushInput)
        /// PublicOK - there is a link demand for public callers. 
        ///
        [SecurityCritical ] 
        [UIPermissionAttribute(SecurityAction.LinkDemand,Unrestricted=true)] 
        public StagingAreaInputItem PushInput(InputEventArgs input,
                                              StagingAreaInputItem promote) // Note: this should be a bool, and always use the InputItem available on these args. 
        {
            if(!_allowAccessToStagingArea)
            {
                throw new InvalidOperationException(SR.Get(SRID.NotAllowedToAccessStagingArea)); 
            }
 
            return this.UnsecureInputManager.PushInput(input, promote); 
        }
 
        /// 
        ///     Pushes an input event onto the top of the staging area.
        /// 
        ///  
        ///     The input event to place on the staging area.  This may not
        ///     be null, and may not already exist in the staging area. 
        ///  
        /// 
        ///     The specified staging area input item. 
        /// 
        ///
        ///     Callers must have UIPermission(PermissionState.Unrestricted) to call this API.
        /// 
        ///
        /// Critical - calls a critical method ( PushInput) 
        /// PublicOK - there is a link demand for public callers. 
        ///
        [SecurityCritical] 
        [UIPermissionAttribute(SecurityAction.LinkDemand,Unrestricted=true)]
        public StagingAreaInputItem PushInput(StagingAreaInputItem input)
        {
            if(!_allowAccessToStagingArea) 
            {
                throw new InvalidOperationException(SR.Get(SRID.NotAllowedToAccessStagingArea)); 
            } 

            return this.UnsecureInputManager.PushInput(input); 
        }

        /// 
        ///     Pops off the input event on the top of the staging area. 
        /// 
        ///  
        ///     The input event that was on the top of the staging area. 
        ///     This can be null, if the staging area was empty.
        ///  
        /// 
        ///     Callers must have UIPermission(PermissionState.Unrestricted) to call this API.
        /// 
        ///  
        ///     Critical - calls a critical function ( InputManager.PopInput)
        ///     PublicOK - there is a demand. 
        ///  
        [SecurityCritical]
        public StagingAreaInputItem PopInput() 
        {
            SecurityHelper.DemandUnrestrictedUIPermission();

            if(!_allowAccessToStagingArea) 
            {
                throw new InvalidOperationException(SR.Get(SRID.NotAllowedToAccessStagingArea)); 
            } 

            return this.UnsecureInputManager.PopInput(); 
        }

        /// 
        ///     Returns the input event on the top of the staging area. 
        /// 
        ///  
        ///     The input event that is on the top of the staging area. 
        ///     This can be null, if the staging area is empty.
        ///  
        /// 
        ///     Callers must have UIPermission(PermissionState.Unrestricted) to call this API.
        /// 
        ///  
        ///     Critical - accesses UnsecureInputManager
        ///     PublicOK - there is a demand. 
        /// 
        [SecurityCritical]
        public StagingAreaInputItem PeekInput() 
        {
            SecurityHelper.DemandUnrestrictedUIPermission();

            if(!_allowAccessToStagingArea) 
            {
                throw new InvalidOperationException(SR.Get(SRID.NotAllowedToAccessStagingArea)); 
            } 

            return this.UnsecureInputManager.PeekInput(); 
        }

        private bool _allowAccessToStagingArea;
 
    }
 
    ///  
    ///     Delegate type for handles of events that use
    ///     . 
    /// 
    public delegate void ProcessInputEventHandler(object sender, ProcessInputEventArgs e);
}
 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK