File: src\Framework\System\Windows\Documents\TextServicesProperty.cs
Project: wpf\PresentationFramework.csproj (PresentationFramework)
//---------------------------------------------------------------------------
//
// <copyright file=TextServicesProperty.cs company=Microsoft>
//    Copyright (C) Microsoft Corporation.  All rights reserved.
// </copyright>
// 
//
// Description: TextServicesProperty implementation.
//
// History:
//  08/01/2003 : yutakas - Ported from dotnet tree.
//
//---------------------------------------------------------------------------
 
using System.Runtime.InteropServices;
using System.Windows.Threading;
using System.Security;
using System.Security.Permissions;
 
using System.Collections;
using System.Diagnostics;
using System.Windows.Media;
using System.Windows.Input;
using System.Windows.Documents;
using MS.Win32;
 
using System;
 
namespace System.Windows.Documents
{
    //------------------------------------------------------
    //
    //  TextServicesProperty class
    //
    //------------------------------------------------------
 
    /// <summary>
    ///   This is an internal.
    ///   This is a holder for Cicero properties.
    ///        - Reading String.
    ///        - Input Language.
    ///        - Display Attribute.
    ///
    ///   
 
 
 
    internal class TextServicesProperty
    {
        //------------------------------------------------------
        //
        //  Constructors
        //
        //------------------------------------------------------
 
        #region Constructors
 
        internal TextServicesProperty(TextStore textstore)
        {
            _textstore = textstore;
        }
 
        #endregion Constructors
 
        //------------------------------------------------------
        //
        //  Internal Methods
        //
        //------------------------------------------------------
 
        #region Internal Methods
 
        /// <summary>
        ///    Calback function for TextEditSink
        ///    we track all property change here.
        /// </summary>
        /// <SecurityNote>
        /// Critical - commits changes to edit buffer, might alow input spoofing
        /// </SecurityNote>
        [SecurityCritical]
        internal void OnEndEdit(
            UnsafeNativeMethods.ITfContext context, 
            int ecReadOnly,
            UnsafeNativeMethods.ITfEditRecord editRecord)
        {
            if (_propertyRanges == null)
            {
                _propertyRanges = new TextServicesDisplayAttributePropertyRanges(_textstore);
            }
 
            _propertyRanges.OnEndEdit(context, ecReadOnly, editRecord);
        }
 
        // Callback from TextStore.OnLayoutUpdated.
        // Updates composition display attribute adorner on-screen location.
        internal void OnLayoutUpdated()
        {
            TextServicesDisplayAttributePropertyRanges displayAttributes = _propertyRanges as TextServicesDisplayAttributePropertyRanges;
 
            if (displayAttributes != null)
            {
                displayAttributes.OnLayoutUpdated();
            }
        }
 
        #endregion Internal Methods
 
        //------------------------------------------------------
        //
        //  Private Fields
        //
        //------------------------------------------------------
 
        #region Private Fields
 
        private TextServicesPropertyRanges _propertyRanges;
 
        private readonly TextStore _textstore;
 
        #endregion Private Fields
    }
}