Browse Source

AvalonEdit IME: Fix crash on threadMgr.SetFocus(null); in 64-bit process.

pull/33/head
Daniel Grunwald 13 years ago
parent
commit
64ce9a7f6f
  1. 16
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs
  2. 3
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeSupport.cs

16
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs

@ -211,14 +211,14 @@ namespace ICSharpCode.AvalonEdit.Editing
{ {
void Activate(out int clientId); void Activate(out int clientId);
void Deactivate(); void Deactivate();
void CreateDocumentMgr(out object docMgr); void CreateDocumentMgr(out IntPtr docMgr);
void EnumDocumentMgrs(out object enumDocMgrs); void EnumDocumentMgrs(out IntPtr enumDocMgrs);
void GetFocus(out object docMgr); void GetFocus(out IntPtr docMgr);
void SetFocus(object docMgr); void SetFocus(IntPtr docMgr);
void AssociateFocus(IntPtr hwnd, object newDocMgr, out object prevDocMgr); void AssociateFocus(IntPtr hwnd, IntPtr newDocMgr, out IntPtr prevDocMgr);
void IsThreadFocus([MarshalAs(UnmanagedType.Bool)] out bool isFocus); void IsThreadFocus([MarshalAs(UnmanagedType.Bool)] out bool isFocus);
void GetFunctionProvider(ref Guid classId, out object funcProvider); void GetFunctionProvider(ref Guid classId, out IntPtr funcProvider);
void EnumFunctionProviders(out object enumProviders); void EnumFunctionProviders(out IntPtr enumProviders);
void GetGlobalCompartment(out object compartmentMgr); void GetGlobalCompartment(out IntPtr compartmentMgr);
} }
} }

3
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeSupport.cs

@ -3,6 +3,7 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@ -77,7 +78,7 @@ namespace ICSharpCode.AvalonEdit.Editing
if (threadMgr != null) { if (threadMgr != null) {
// Even though the docu says passing null is invalid, this seems to help // Even though the docu says passing null is invalid, this seems to help
// activating the IME on the default input context that is shared with WPF // activating the IME on the default input context that is shared with WPF
threadMgr.SetFocus(null); threadMgr.SetFocus(IntPtr.Zero);
} }
} }
} }

Loading…
Cancel
Save