| File: System\Windows\Input\ProcessInputEventArgs.cs | Web Access |
| Project: src\wpf\src\Microsoft.DotNet.Wpf\src\PresentationCore\PresentationCore.csproj (PresentationCore) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Windows.Input { /// <summary> /// Provides access to the input manager's staging area. /// </summary> /// <remarks> /// An instance of this class, or a derived class, is passed to the /// handlers of the following events: /// <list> /// <item> /// <see cref="InputManager.PreProcessInput"/> /// </item> /// <item> /// <see cref="InputManager.PostProcessInput"/> /// </item> /// </list> /// </remarks> public class ProcessInputEventArgs : NotifyInputEventArgs { // Only we can make these. Note that we cache and resuse instances. internal ProcessInputEventArgs() {} internal override void Reset(StagingAreaInputItem input, InputManager inputManager) { _allowAccessToStagingArea = true; base.Reset(input, inputManager); } /// <summary> /// Pushes an input event onto the top of the staging area. /// </summary> /// <param name="input"> /// The input event to place on the staging area. This may not /// be null, and may not already exist in the staging area. /// </param> /// <param name="promote"> /// An existing staging area item to promote the state from. /// </param> /// <returns> /// The staging area input item that wraps the specified input. /// </returns> 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.NotAllowedToAccessStagingArea); } return this.UnsecureInputManager.PushInput(input, promote); } /// <summary> /// Pushes an input event onto the top of the staging area. /// </summary> /// <param name="input"> /// The input event to place on the staging area. This may not /// be null, and may not already exist in the staging area. /// </param> /// <returns> /// The specified staging area input item. /// </returns> public StagingAreaInputItem PushInput(StagingAreaInputItem input) { if(!_allowAccessToStagingArea) { throw new InvalidOperationException(SR.NotAllowedToAccessStagingArea); } return this.UnsecureInputManager.PushInput(input); } /// <summary> /// Pops off the input event on the top of the staging area. /// </summary> /// <returns> /// The input event that was on the top of the staging area. /// This can be null, if the staging area was empty. /// </returns> public StagingAreaInputItem PopInput() { if(!_allowAccessToStagingArea) { throw new InvalidOperationException(SR.NotAllowedToAccessStagingArea); } return this.UnsecureInputManager.PopInput(); } /// <summary> /// Returns the input event on the top of the staging area. /// </summary> /// <returns> /// The input event that is on the top of the staging area. /// This can be null, if the staging area is empty. /// </returns> public StagingAreaInputItem PeekInput() { if(!_allowAccessToStagingArea) { throw new InvalidOperationException(SR.NotAllowedToAccessStagingArea); } return this.UnsecureInputManager.PeekInput(); } private bool _allowAccessToStagingArea; } /// <summary> /// Delegate type for handles of events that use /// <see cref="ProcessInputEventArgs"/>. /// </summary> public delegate void ProcessInputEventHandler(object sender, ProcessInputEventArgs e); }