\r
void CXkeymacsDll::InitKeyboardProc(BOOL bImeComposition)\r
{\r
- if (CUtils::IsFindDialog()) {\r
- static BOOL bImeCompositionOld = FALSE;\r
- if (!bImeComposition\r
- && bImeCompositionOld) {\r
- DepressKey(VK_END);\r
- ReleaseKey(VK_END);\r
- }\r
- bImeCompositionOld = bImeComposition;\r
- }\r
-\r
CUtils::SetApplicationName(bImeComposition);\r
-\r
if (_tcsnicmp(m_Config.szSpecialApp[m_nApplicationID], CUtils::GetApplicationName(), 0xF) || !IsMatchWindowText(m_Config.szWindowText[m_nApplicationID])) { // PROCESSENTRY32 has only 0xF bytes of Name\r
m_nApplicationID = -1;\r
-\r
- for (int nApplicationID = 0; nApplicationID < MAX_APP; ++nApplicationID) {\r
- if (!_tcsnicmp(m_Config.szSpecialApp[nApplicationID], CUtils::GetApplicationName(), 0xF) && IsMatchWindowText(m_Config.szWindowText[nApplicationID])) {\r
-\r
- if (m_nApplicationID < 0\r
- || CUtils::GetWindowTextType(m_Config.szWindowText[m_nApplicationID]) < CUtils::GetWindowTextType(m_Config.szWindowText[nApplicationID])\r
- || CUtils::GetWindowTextType(m_Config.szWindowText[m_nApplicationID]) == CUtils::GetWindowTextType(m_Config.szWindowText[nApplicationID])\r
- && _tcscmp(m_Config.szWindowText[m_nApplicationID], m_Config.szWindowText[nApplicationID]) <= 0) {\r
- m_nApplicationID = nApplicationID;\r
- }\r
- }\r
- }\r
-\r
- if (m_nApplicationID < 0) {\r
- for (int nApplicationID = 0; nApplicationID < MAX_APP; ++nApplicationID) {\r
- if (!_tcsicmp(m_Config.szSpecialApp[nApplicationID], _T("Default"))) {\r
- m_nApplicationID = nApplicationID;\r
- break;\r
- }\r
- }\r
-\r
- if (m_nApplicationID < 0) {\r
- m_nApplicationID = 0;\r
+ for (int nAppID = 0; nAppID < MAX_APP; nAppID++) {\r
+ if (_tcsnicmp(m_Config.szSpecialApp[nAppID], CUtils::GetApplicationName(), 0xF) || !IsMatchWindowText(m_Config.szWindowText[nAppID]))\r
+ continue;\r
+ if (m_nApplicationID < 0)\r
+ m_nApplicationID = nAppID;\r
+ else {\r
+ const LPCSTR curText = m_Config.szWindowText[m_nApplicationID];\r
+ const LPCSTR newText = m_Config.szWindowText[nAppID];\r
+ const int curType = CUtils::GetWindowTextType(curText);\r
+ const int newType = CUtils::GetWindowTextType(newText);\r
+ if (curType < newType || curType == newType && _tcscmp(curText, newText) <= 0)\r
+ m_nApplicationID = nAppID;\r
}\r
}\r
+ if (m_nApplicationID < 0)\r
+ m_nApplicationID = GetAppID(_T("Default"), 0);\r
}\r
-\r
- if (m_Config.nSettingStyle[m_nApplicationID] != SETTING_DISABLE\r
- && (_tcsicmp(m_Config.szSpecialApp[m_nApplicationID], _T("Default")) || !CUtils::IsDefaultIgnoreApplication())\r
- && !bImeComposition\r
- && CUtils::IsDialog()) {\r
+ if (m_Config.nSettingStyle[m_nApplicationID] != SETTING_DISABLE &&\r
+ (_tcsicmp(m_Config.szSpecialApp[m_nApplicationID], _T("Default")) || !CUtils::IsDefaultIgnoreApplication()) &&\r
+ !bImeComposition && CUtils::IsDialog() && m_Config.bUseDialogSetting[m_nApplicationID])\r
// Use Dialog Setting\r
- if (m_Config.bUseDialogSetting[m_nApplicationID]) {\r
- int nOriginalApplicationID = m_nApplicationID;\r
- for (m_nApplicationID = 0; m_nApplicationID < MAX_APP; ++m_nApplicationID) {\r
- if (!_tcsicmp(m_Config.szSpecialApp[m_nApplicationID], _T("Dialog"))) {\r
- break;\r
- }\r
- }\r
- if (m_nApplicationID == MAX_APP) {\r
- m_nApplicationID = nOriginalApplicationID;\r
- }\r
- }\r
- }\r
+ m_nApplicationID = GetAppID(_T("Dialog"), m_nApplicationID);\r
\r
ICONMSG msg[3] = {\r
{CX_ICON, OFF_ICON, ""},\r
CCommands::Reset();\r
}\r
\r
-// emulate emacs // cf virtual-key code\r
+int CXkeymacsDll::GetAppID(const LPCSTR szName, const int fallback)\r
+{\r
+ for (int i = 0; i < MAX_APP; i++)\r
+ if (!_tcsicmp(m_Config.szSpecialApp[i], szName))\r
+ return i;\r
+ return fallback;\r
+}\r
+\r
LRESULT CALLBACK CXkeymacsDll::KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)\r
{\r
ASSERT(0 <= wParam && wParam <= UCHAR_MAX);\r