Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / InterOp / HwndSourceKeyboardInputSite.cs / 1407647 / HwndSourceKeyboardInputSite.cs
using System;
using System.Windows.Input;
using System.Collections;
using MS.Win32;
using System.Windows.Media;
using System.Windows.Threading;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
using System.Security ;
using MS.Internal.PresentationCore;
namespace System.Windows.Interop
{
internal class HwndSourceKeyboardInputSite : IKeyboardInputSite
{
///
/// Critical: satisfies a LinkDemand for 'UIPermissionAttribute' on method
/// 'System.Windows.Interop.IKeyboardInputSink.set_KeyboardInputSite(System.Windows.Interop.IKeyboardInputSite)'.
///
[SecurityCritical]
public HwndSourceKeyboardInputSite(HwndSource source, IKeyboardInputSink sink)
{
if(source == null)
{
throw new ArgumentNullException("source");
}
if(sink == null)
{
throw new ArgumentNullException("sink");
}
if(!(sink is UIElement))
{
throw new ArgumentException(SR.Get(SRID.KeyboardSinkMustBeAnElement), "sink");
}
_source = source;
_sink = sink;
_sink.KeyboardInputSite = this;
_sinkElement = sink as UIElement;
}
#region IKeyboardInputSite
///
/// Unregisters a child KeyboardInputSink from this sink.
///
///
/// Requires unmanaged code permission.
///
///
/// Critical - calls CriticalUnregister.
/// TreatAsSafe: - Interface declaration demands unrestricted UI permission
///
[ SecurityCritical,SecurityTreatAsSafe ]
void IKeyboardInputSite.Unregister()
{
CriticalUnregister();
}
///
/// Unregisters a child KeyboardInputSink from this sink.
///
///
/// Critical - calls CriticalUnregisterKeyboardInputSink
///
[ SecurityCritical ]
internal void CriticalUnregister()
{
if(_source != null && _sink != null)
{
_source.CriticalUnregisterKeyboardInputSink(this);
_sink.KeyboardInputSite = null;
}
_source = null;
_sink = null;
}
///
/// Returns the sink associated with this site (the "child", not
/// the "parent" sink that owns the site). There's no way of
/// getting from the site to the parent sink.
///
IKeyboardInputSink IKeyboardInputSite.Sink
{
get
{
return _sink;
}
}
///
/// Components call this when they want to move focus ("tab") but
/// have nowhere further to tab within their own component. Return
/// value is true if the site moved focus, false if the calling
/// component still has focus and should wrap around.
///
bool IKeyboardInputSite.OnNoMoreTabStops(TraversalRequest request)
{
bool traversed = false;
if(_sinkElement != null)
{
traversed = _sinkElement.MoveFocus(request);
}
return traversed;
}
#endregion IKeyboardInputSite
private HwndSource _source;
private IKeyboardInputSink _sink;
private UIElement _sinkElement;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlCrossApplyToCrossJoin.cs
- COM2PictureConverter.cs
- TextBoxAutoCompleteSourceConverter.cs
- WebMessageBodyStyleHelper.cs
- NavigationFailedEventArgs.cs
- UmAlQuraCalendar.cs
- RegexMatch.cs
- Point3DAnimationUsingKeyFrames.cs
- SqlConnectionManager.cs
- QueryInterceptorAttribute.cs
- FormsAuthenticationModule.cs
- WinCategoryAttribute.cs
- DefinitionBase.cs
- ColorBlend.cs
- SqlBulkCopyColumnMappingCollection.cs
- TimeoutValidationAttribute.cs
- HttpProfileGroupBase.cs
- XmlHelper.cs
- AppSettingsExpressionBuilder.cs
- SmiRecordBuffer.cs
- SslStream.cs
- SafeThemeHandle.cs
- PointHitTestParameters.cs
- CodeRemoveEventStatement.cs
- ValidationEventArgs.cs
- UserMapPath.cs
- SemanticBasicElement.cs
- SqlInternalConnectionTds.cs
- ToggleProviderWrapper.cs
- InternalPolicyElement.cs
- FixedTextSelectionProcessor.cs
- MenuCommand.cs
- AllMembershipCondition.cs
- SoapReflectionImporter.cs
- recordstate.cs
- COSERVERINFO.cs
- VerticalAlignConverter.cs
- SizeLimitedCache.cs
- AutomationPattern.cs
- Root.cs
- ExtenderProviderService.cs
- AxHost.cs
- Msec.cs
- ThreadStateException.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- RootContext.cs
- SystemParameters.cs
- Panel.cs
- HasCopySemanticsAttribute.cs
- JsonSerializer.cs
- Vector3DCollectionConverter.cs
- ControlBuilder.cs
- TreeViewImageKeyConverter.cs
- ThaiBuddhistCalendar.cs
- WebPartTransformerAttribute.cs
- OleDbError.cs
- SqlFlattener.cs
- AliasGenerator.cs
- StringComparer.cs
- OAVariantLib.cs
- FormattedTextSymbols.cs
- ImmutablePropertyDescriptorGridEntry.cs
- UnsafeNativeMethods.cs
- NavigationPropertyEmitter.cs
- CollectionViewSource.cs
- PlatformCulture.cs
- Pkcs9Attribute.cs
- SR.cs
- WebPartTracker.cs
- X509CertificateClaimSet.cs
- ContextStaticAttribute.cs
- CategoryAttribute.cs
- SchemaTableColumn.cs
- CalendarSelectionChangedEventArgs.cs
- DataBoundControlAdapter.cs
- ObjectDataSourceMethodEventArgs.cs
- DropShadowBitmapEffect.cs
- DataGridAutoFormat.cs
- CryptographicAttribute.cs
- BitmapEffectrendercontext.cs
- TypographyProperties.cs
- BamlResourceSerializer.cs
- NotFiniteNumberException.cs
- TripleDESCryptoServiceProvider.cs
- UserPersonalizationStateInfo.cs
- ClonableStack.cs
- ToolStripContainer.cs
- ProviderUtil.cs
- ToolStripArrowRenderEventArgs.cs
- PartialList.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- MenuItemStyleCollection.cs
- Point.cs
- TraceSection.cs
- ContainerActivationHelper.cs
- RTLAwareMessageBox.cs
- Wizard.cs
- DataControlFieldCell.cs
- BuildManager.cs
- Byte.cs