diff --git a/windows/src/engine/keyman32/addins.cpp b/windows/src/engine/keyman32/addins.cpp
deleted file mode 100644
index 6c7f5d0f28..0000000000
--- a/windows/src/engine/keyman32/addins.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- Name: addins
- Copyright: Copyright (C) SIL International.
- Documentation:
- Description:
- Create Date: 14 Jun 2008
-
- Modified Date: 14 May 2010
- Authors: mcdurdin
- Related Files:
- Dependencies:
-
- Bugs:
- Todo:
- Notes:
- History: 14 Jun 2008 - mcdurdin - I1488 - Fix registry handle leak
- 11 Mar 2009 - mcdurdin - I1894 - Fix threading bugs introduced in I1888
- 11 Dec 2009 - mcdurdin - I934 - x64 - Initial version
- 12 Mar 2010 - mcdurdin - I934 - x64 - Complete
- 12 Mar 2010 - mcdurdin - I2229 - Remove hints and warnings
- 04 May 2010 - mcdurdin - I2351 - Robustness - verify _td return value
- 14 May 2010 - mcdurdin - I2374 - Fix crash in some situations
-*/
-
-#include "pch.h"
-
-void Addin_Release()
-{
- PKEYMAN64THREADDATA _td = ThreadGlobals();
- if(!_td) return;
-
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addin_Release: ENTER [%d]", nAddins);
- if(_td->Addins)
- {
- for(int i = 0; i < _td->nAddins; i++)
- if(_td->Addins[i].hAddin)
- {
- if(_td->Addins[i].Uninitialise) (*_td->Addins[i].Uninitialise)();
- FreeLibrary(_td->Addins[i].hAddin);
- }
- delete[] _td->Addins;
- }
- _td->Addins = NULL;
- _td->nAddins = 0;
- _td->CurrentAddin = -1;
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addin_Release: EXIT");
-}
-
-void ReadAddins(HKEY hkey)
-{
- PKEYMAN64THREADDATA _td = ThreadGlobals();
- if(!_td) return;
-
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addins: ReadAddins: ENTER");
- RegistryReadOnly *reg = new RegistryReadOnly(hkey);
- if(reg->OpenKeyReadOnly(hkey == HKEY_CURRENT_USER ? REGSZ_KeymanAddinsCU : REGSZ_KeymanAddinsLM))
- {
- int n = _td->nAddins;
- char buf[128];
- while(reg->GetValueNames(buf, 128, n))
- {
- Addin *a = new Addin[n+1];
- if(_td->Addins)
- {
- memcpy(a, _td->Addins, n * sizeof(Addin));
- delete[] _td->Addins;
- }
- _td->Addins = a;
- _td->Addins[n].hAddin = 0;
- _td->Addins[n].FocusChanged = NULL;
- _td->Addins[n].Initialise = NULL;
- _td->Addins[n].OutputBackspace = NULL;
- _td->Addins[n].OutputChar = NULL;
- _td->Addins[n].Uninitialise = NULL;
- _td->Addins[n].ShouldProcess = NULL;
- strcpy(_td->Addins[n].ClassName, buf);
- reg->ReadString(buf, _td->Addins[n].AddinName, 260);
- _td->Addins[n].Application[0] = 0;
- n++;
- }
- _td->nAddins = n;
- }
- delete reg;
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addins: ReadAddins: EXIT");
-}
-
-void Addin_Refresh()
-{
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addin_Refresh: ENTER");
- Addin_Release();
- ReadAddins(HKEY_CURRENT_USER);
- ReadAddins(HKEY_LOCAL_MACHINE);
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addin_Refresh: EXIT");
-}
-
-BOOL LoadAddin()
-{
- PKEYMAN64THREADDATA _td = ThreadGlobals();
- if(!_td) return FALSE;
- if(_td->CurrentAddin == -1) return FALSE;
-
- Addin *a = &_td->Addins[_td->CurrentAddin];
- if(!a->hAddin)
- {
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addins: LoadAddin: ENTER");
- a->hAddin = LoadLibrary(a->AddinName);
- if(!a->hAddin)
- {
- a->hAddin = 0;
- a->ClassName[0] = 0; // prevent add-in attempting to load again
- _td->CurrenthWnd = 0;
- _td->CurrentAddin = -1;
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addins: LoadAddin: EXIT - FALSE - LoadLibrary");
- return FALSE;
- }
- a->OutputBackspace = (PKeymanOutputBackspace) GetProcAddress(a->hAddin, "KeymanOutputBackspace");
- a->OutputChar = (PKeymanOutputChar) GetProcAddress(a->hAddin, "KeymanOutputChar");
- a->FocusChanged = (PKeymanFocusChanged) GetProcAddress(a->hAddin, "KeymanFocusChanged");
- a->ShouldProcess = (PKeymanShouldProcess) GetProcAddress(a->hAddin, "KeymanShouldProcess");
- a->Initialise = (PKeymanInit) GetProcAddress(a->hAddin, "KeymanInitialise");
- a->Uninitialise = (PKeymanInit) GetProcAddress(a->hAddin, "KeymanUninitialise");
-
- if(a->Initialise && !(*a->Initialise)())
- {
- FreeLibrary(a->hAddin);
- a->hAddin = 0;
- a->ClassName[0] = 0;
- _td->CurrenthWnd = 0;
- _td->CurrentAddin = -1;
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addins: LoadAddin: EXIT - FALSE - Initialise");
- return FALSE;
- }
- //SendDebugMessageFormat(GetFocus(), sdmGlobal, 0, "Addins: LoadAddin: EXIT - TRUE - Loaded");
- }
- return TRUE;
-}
-
-BOOL Addin_ShouldProcessUnichar(HWND hwnd)
-{
- PKEYMAN64THREADDATA _td = ThreadGlobals();
- if(!_td) return FALSE;
-
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ShouldProcessUnichar: ENTER");
- _td->CurrenthWnd = hwnd;
- GetClassName(hwnd, _td->CurrentClassName, 128);
- if(_td->CurrentAddin >= 0 && !_strcmpi(_td->CurrentClassName, _td->Addins[_td->CurrentAddin].ClassName))
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ShouldProcessUnichar: EXIT - TRUE - CurrentAddin okay");
- return TRUE;
- }
-
- for(int i = 0; i < _td->nAddins; i++)
- if(!_strcmpi(_td->CurrentClassName, _td->Addins[i].ClassName))
- {
- _td->CurrentAddin = i;
- if(!LoadAddin())
- {
- _td->CurrentAddin = -1;
- _td->Addins[i].ClassName[0] = 0; // prevent add-in attempting to load again
- }
- else if(_td->Addins[i].ShouldProcess && !(*_td->Addins[i].ShouldProcess)(hwnd))
- _td->CurrentAddin = -1;
- else
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ShouldProcessUnichar: EXIT - TRUE - FoundAddin");
- return TRUE;
- }
- }
- _td->CurrentAddin = -1;
- _td->CurrenthWnd = 0;
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ShouldProcessUnichar: EXIT - FALSE");
- return FALSE;
-}
-
-BOOL Addin_ProcessUnichar(HWND hwnd, DWORD chr)
-{
- PKEYMAN64THREADDATA _td = ThreadGlobals();
- if(!_td) return FALSE;
-
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessUnichar: ENTER");
- if(_td->CurrenthWnd != hwnd)
- if(!Addin_ShouldProcessUnichar(hwnd))
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessUnichar: EXIT - FALSE - Addin_ShouldProcessUnichar");
- return FALSE;
- }
-
- if(!LoadAddin())
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessUnichar: EXIT - FALSE - !LoadAddin)");
- return FALSE;
- }
- if(!_td->Addins[_td->CurrentAddin].OutputChar)
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessUnichar: EXIT - FALSE !OutputChar");
- return FALSE;
- }
-
- BOOL b = (*_td->Addins[_td->CurrentAddin].OutputChar)(hwnd, chr);
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessUnichar: EXIT (b) == %d", b);
- return b;
-}
-
-BOOL Addin_ProcessBackspace(HWND hwnd)
-{
- PKEYMAN64THREADDATA _td = ThreadGlobals();
- if(!_td) return FALSE;
-
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessBackspace: ENTER");
- if(_td->CurrenthWnd != hwnd)
- if(!Addin_ShouldProcessUnichar(hwnd))
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessBackspace: EXIT - !ShouldProcess");
- return FALSE;
- }
-
- if(!LoadAddin())
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessBackspace: EXIT - !LoadAddin");
- return FALSE;
- }
- if(!_td->Addins[_td->CurrentAddin].OutputBackspace)
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessBackspace: EXIT - !OutputBackspace");
- return FALSE;
- }
-
- BOOL b = (*_td->Addins[_td->CurrentAddin].OutputBackspace)(hwnd);
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_ProcessBackspace: EXIT - (b) = %d", b);
- return b;
-}
-
-void Addin_FocusChanged(HWND hwnd)
-{
- PKEYMAN64THREADDATA _td = ThreadGlobals();
- if(!_td) return;
-
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_FocusChanged: ENTER");
-
- if(_td->CurrenthWnd != hwnd)
- if(!Addin_ShouldProcessUnichar(hwnd))
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_FocusChanged: EXIT - !ShouldProcess");
- return;
- }
-
- if(!LoadAddin())
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_FocusChanged: EXIT - !LoadAddin");
- return;
- }
-
- // Addin variables must be valid now
-
- if(!_td->Addins[_td->CurrentAddin].FocusChanged)
- {
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_FocusChanged: EXIT - !FocusChanged");
- return;
- }
-
- (*_td->Addins[_td->CurrentAddin].FocusChanged)();
- //SendDebugMessageFormat(hwnd, sdmGlobal, 0, "Addin_FocusChanged: EXIT");
-}
diff --git a/windows/src/engine/keyman32/addins.h b/windows/src/engine/keyman32/addins.h
deleted file mode 100644
index 71aa006e59..0000000000
--- a/windows/src/engine/keyman32/addins.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- Name: addins
- Copyright: Copyright (C) SIL International.
- Documentation:
- Description:
- Create Date: 11 Dec 2009
-
- Modified Date: 11 Dec 2009
- Authors: mcdurdin
- Related Files:
- Dependencies:
-
- Bugs:
- Todo:
- Notes:
- History: 11 Dec 2009 - mcdurdin - I934 - x64 - Initial version
-*/
-void Addin_Release();
-void Addin_Refresh();
-BOOL Addin_ShouldProcessUnichar(HWND hwnd);
-BOOL Addin_ProcessUnichar(HWND hwnd, DWORD chr);
-BOOL Addin_ProcessBackspace(HWND hwnd);
-void Addin_FocusChanged(HWND hwnd);
diff --git a/windows/src/engine/keyman32/appint/aiWin2000Unicode.cpp b/windows/src/engine/keyman32/appint/aiWin2000Unicode.cpp
index 19da87a543..5fa67fc715 100644
--- a/windows/src/engine/keyman32/appint/aiWin2000Unicode.cpp
+++ b/windows/src/engine/keyman32/appint/aiWin2000Unicode.cpp
@@ -277,7 +277,6 @@ BOOL AIWin2000Unicode::PostKeys()
break;
case QIT_BACK:
if(Queue[n].dwData & BK_DEADKEY) break;
- if(Addin_ProcessBackspace(hwnd)) break;
pInputs[i].type = INPUT_KEYBOARD;
pInputs[i].ki.wVk = VK_BACK;
diff --git a/windows/src/engine/keyman32/keyman-engine.vcxproj b/windows/src/engine/keyman32/keyman-engine.vcxproj
index 6869117fd9..632b4e6a67 100644
--- a/windows/src/engine/keyman32/keyman-engine.vcxproj
+++ b/windows/src/engine/keyman32/keyman-engine.vcxproj
@@ -186,12 +186,6 @@
-
- %(AdditionalIncludeDirectories)
- %(PreprocessorDefinitions)
- %(AdditionalIncludeDirectories)
- %(PreprocessorDefinitions)
-
%(AdditionalIncludeDirectories)
%(PreprocessorDefinitions)
diff --git a/windows/src/engine/keyman32/keyman-engine.vcxproj.filters b/windows/src/engine/keyman32/keyman-engine.vcxproj.filters
index 7cd4d906d1..c0eab08097 100644
--- a/windows/src/engine/keyman32/keyman-engine.vcxproj.filters
+++ b/windows/src/engine/keyman32/keyman-engine.vcxproj.filters
@@ -15,9 +15,6 @@
-
- Source Files
-
Source Files
diff --git a/windows/src/engine/keyman32/keyman32.cpp b/windows/src/engine/keyman32/keyman32.cpp
index 962697d78b..0e238cb6ea 100644
--- a/windows/src/engine/keyman32/keyman32.cpp
+++ b/windows/src/engine/keyman32/keyman32.cpp
@@ -492,7 +492,6 @@ extern "C" BOOL _declspec(dllexport) WINAPI Keyman_Exit(void)
*Globals::Keyman_Shutdown() = TRUE;
ReleaseKeyboards(TRUE);
- Addin_Release();
if(!Globals::get_Keyman_Initialised())
{
@@ -925,8 +924,6 @@ void RefreshKeyboards(BOOL Initialising)
// Can happen when multiple top-level windows for one process
- Addin_Refresh();
-
SendDebugMessageFormat(0,sdmGlobal,0,"---ENTER RefreshKeyboards---");
//FInRefreshKeyboards = TRUE;
diff --git a/windows/src/engine/keyman32/keyman32.vcxproj b/windows/src/engine/keyman32/keyman32.vcxproj
index 0d78d2c292..670df3c1d4 100644
--- a/windows/src/engine/keyman32/keyman32.vcxproj
+++ b/windows/src/engine/keyman32/keyman32.vcxproj
@@ -176,12 +176,6 @@
-
- %(AdditionalIncludeDirectories)
- %(PreprocessorDefinitions)
- %(AdditionalIncludeDirectories)
- %(PreprocessorDefinitions)
-
%(AdditionalIncludeDirectories)
%(PreprocessorDefinitions)
@@ -362,7 +356,6 @@
-
diff --git a/windows/src/engine/keyman32/keyman32.vcxproj.filters b/windows/src/engine/keyman32/keyman32.vcxproj.filters
index 8995c39a93..dcf5f5d4c5 100644
--- a/windows/src/engine/keyman32/keyman32.vcxproj.filters
+++ b/windows/src/engine/keyman32/keyman32.vcxproj.filters
@@ -15,9 +15,6 @@
-
- Source Files
-
Source Files
@@ -162,9 +159,6 @@
-
- Header Files
-
Header Files
diff --git a/windows/src/engine/keyman32/keymanengine.h b/windows/src/engine/keyman32/keymanengine.h
index c70d039ff7..fe536cb399 100644
--- a/windows/src/engine/keyman32/keymanengine.h
+++ b/windows/src/engine/keyman32/keymanengine.h
@@ -246,7 +246,6 @@ void keybd_shift(LPINPUT pInputs, int* n, BOOL isReset, LPBYTE const kbd);
#include "keystate.h"
#include "calldll.h"
-#include "addins.h"
#include "keymancontrol.h"
#include "keyboardoptions.h"
#include "kmprocessactions.h"
diff --git a/windows/src/engine/keyman32/kmhook_getmessage.cpp b/windows/src/engine/keyman32/kmhook_getmessage.cpp
index 5aec91a958..9b128dccc6 100644
--- a/windows/src/engine/keyman32/kmhook_getmessage.cpp
+++ b/windows/src/engine/keyman32/kmhook_getmessage.cpp
@@ -252,13 +252,9 @@ LRESULT _kmnGetMessageProc(int nCode, WPARAM wParam, LPARAM lParam)
Handle WM_UNICHAR messages for RichEdit control -- should we test RichEdit version?
*/
- if(mp->message == WM_UNICHAR && Addin_ShouldProcessUnichar(mp->hwnd))
+ if(mp->message == WM_UNICHAR)
{
- if(Addin_ProcessUnichar(mp->hwnd, (DWORD) mp->wParam))
- {
- mp->message = 0;
- return CallNextHookEx(Globals::get_hhookGetMessage(), nCode, wParam, lParam);
- }
+ return CallNextHookEx(Globals::get_hhookGetMessage(), nCode, wParam, lParam);
}
/*
@@ -379,7 +375,6 @@ void ProcessWMKeyman(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
if(_td->app) _td->app->ResetQueue();
GetCapsAndNumlockState();
- Addin_FocusChanged(hwnd);
UpdateActiveWindows();
}
}
diff --git a/windows/src/engine/keyman64/keyman64.vcxproj b/windows/src/engine/keyman64/keyman64.vcxproj
index d70c0872ed..15546caef5 100644
--- a/windows/src/engine/keyman64/keyman64.vcxproj
+++ b/windows/src/engine/keyman64/keyman64.vcxproj
@@ -177,7 +177,6 @@
-
@@ -279,7 +278,6 @@
-
diff --git a/windows/src/engine/keyman64/keyman64.vcxproj.filters b/windows/src/engine/keyman64/keyman64.vcxproj.filters
index 0b53bd96cb..cd8aeefb32 100644
--- a/windows/src/engine/keyman64/keyman64.vcxproj.filters
+++ b/windows/src/engine/keyman64/keyman64.vcxproj.filters
@@ -2,7 +2,6 @@
-
@@ -41,7 +40,6 @@
-