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

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

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
@ -77,7 +78,7 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -77,7 +78,7 @@ namespace ICSharpCode.AvalonEdit.Editing
if (threadMgr != null) {
// 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
threadMgr.SetFocus(null);
threadMgr.SetFocus(IntPtr.Zero);
}
}
}

Loading…
Cancel
Save