SEARCH_DIRECTION CCommands::m_SearchDirection = NA;\r
int (*CCommands::m_LastKillCommand)() = NULL;\r
int (*CCommands::m_LastCommand)() = NULL;\r
-CPtrList CCommands::m_CaretPos;\r
-CPtrList CCommands::m_ScrollInfo;\r
-CPtrList CCommands::m_FindText;\r
BOOL CCommands::m_bFirstFindDialog = FALSE;\r
BOOL CCommands::m_bTemporarilyDisableXKeymacs = FALSE;\r
CArray<CClipboardSnap *, CClipboardSnap *> CCommands::m_oClipboardData;\r
return bDirectionBackward;\r
}\r
\r
-void CCommands::GetCaretPosition()\r
-{\r
-// CUtils::Log(_T("GetClipboardTextLength = %d"), CUtils::GetClipboardTextLength());\r
-\r
- try {\r
- POINT *pCaretPos = new POINT;\r
- if (pCaretPos && GetCaretPos(pCaretPos)) {\r
-// CUtils::Log(_T("x = %d, y = %d"), pCaretPos->x, pCaretPos->y);\r
- m_CaretPos.AddTail(pCaretPos);\r
- } else {\r
- delete pCaretPos;\r
- pCaretPos = NULL;\r
- }\r
- }\r
- catch (CMemoryException* e) {\r
- e->Delete();\r
-// CUtils::Log("GetCaretPosition: pCaretPos: 'new' threw an exception");\r
- }\r
-\r
- try {\r
- SCROLLINFO *pScrollInfo = new SCROLLINFO;\r
- if (pScrollInfo) {\r
- memset(pScrollInfo, 0, sizeof(SCROLLINFO));\r
- pScrollInfo->cbSize = sizeof(SCROLLINFO);\r
- pScrollInfo->fMask = SIF_ALL;\r
- if (GetScrollInfo(GetFocus(), SB_VERT, pScrollInfo)) {\r
-// CUtils::Log(_T("page = %d, pos = %d, max = %d, min = %d, trackpos = %d"), pScrollInfo->nPage, pScrollInfo->nPos, pScrollInfo->nMax, pScrollInfo->nMin, pScrollInfo->nTrackPos);\r
- m_ScrollInfo.AddTail(pScrollInfo);\r
- } else {\r
-// CUtils::Log(_T("GetScrollInfo Error: %d"), GetLastError());\r
- delete pScrollInfo;\r
- pScrollInfo = NULL;\r
- }\r
- }\r
- }\r
- catch (CMemoryException* e) {\r
- e->Delete();\r
-// CUtils::Log("GetCaretPosition: pScrollInfo: 'new' threw an exception");\r
- }\r
-\r
- try {\r
- CString* pClipboardText = new CString;\r
- if (pClipboardText) {\r
- CUtils::GetClipboardText(pClipboardText);\r
- CUtils::SetClipboardText(pClipboardText);\r
- m_FindText.AddTail(pClipboardText);\r
- }\r
- }\r
- catch (CMemoryException* e) {\r
- e->Delete();\r
-// CUtils::Log("GetCaretPosition: pClipboardText: 'new' threw an exception");\r
- }\r
-}\r
-\r
-BOOL CCommands::SetCaretPosition()\r
-{\r
- {\r
-// TCHAR buf[0x100] = {'\0'};\r
-// GetWindowText(GetForegroundWindow(), buf, sizeof(buf));\r
-// CUtils::Log(buf);\r
- }\r
-\r
- if (!m_ScrollInfo.IsEmpty()) {\r
- SCROLLINFO* pScrollInfo = (SCROLLINFO*)m_ScrollInfo.GetTail();\r
- delete pScrollInfo;\r
- pScrollInfo = NULL;\r
- m_ScrollInfo.RemoveTail();\r
- }\r
- if (!m_ScrollInfo.IsEmpty()) {\r
- SCROLLINFO* pScrollInfo = (SCROLLINFO*)m_ScrollInfo.GetTail();\r
- SendMessage(GetFocus(), WM_VSCROLL, SB_THUMBPOSITION | (pScrollInfo->nPos << 0x10), NULL);\r
- }\r
-\r
- BOOL bMoveCaret = FALSE;\r
- if (!m_CaretPos.IsEmpty()) {\r
- POINT* pCaretPos = (POINT*)m_CaretPos.GetTail();\r
- delete pCaretPos;\r
- pCaretPos = NULL;\r
- m_CaretPos.RemoveTail();\r
- }\r
- if (!m_CaretPos.IsEmpty()) {\r
- POINT* pCaretPos = (POINT*)m_CaretPos.GetTail();\r
- SetCaretPos(pCaretPos->x, pCaretPos->y);\r
-\r
-// CUtils::Log(_T("set x = %d), y = %d", p->x, p->y);\r
-\r
- DeactivateMark();\r
-\r
- const int nPreviousFindTextLength = CUtils::GetClipboardTextLength();\r
- if (0 < nPreviousFindTextLength) {\r
- if (CUtils::IsWordpad()) {\r
- POSITION position = m_FindText.GetTailPosition();\r
- CString* pPreviousFindText = (CString*)m_FindText.GetPrev(position);\r
- CString* pNextFindText = (CString*)m_FindText.GetPrev(position);\r
- if (*pPreviousFindText == *pNextFindText) {\r
- for (int i = 0; i <= nPreviousFindTextLength; ++i) {\r
- Kdu(VK_LEFT);\r
- }\r
- } else {\r
- Kdu(VK_LEFT);\r
- }\r
- }\r
- bMoveCaret = TRUE;\r
- }\r
- } else {\r
- Kdu(VK_LEFT);\r
- }\r
-\r
-// CUtils::Log(_T("scrollInfo.GetCount() = %d, szFindText.GetLength() = %d"), scrollInfo.GetCount(), szFindText.GetLength());\r
-\r
- if (!m_FindText.IsEmpty()) {\r
- CString *pFindText = (CString *)m_FindText.GetTail();\r
- delete pFindText;\r
- pFindText = NULL;\r
- m_FindText.RemoveTail();\r
- }\r
- if (!m_FindText.IsEmpty()) {\r
- CString *pFindText = (CString *)m_FindText.GetTail();\r
- CUtils::SetClipboardText(pFindText);\r
- }\r
-\r
- return bMoveCaret;\r
-}\r
-\r
void CCommands::SetMark(BOOL bSetMark)\r
{\r
m_bSetMark = bSetMark;\r
return Reset(GOTO_HOOK);\r
}\r
\r
-BOOL CCommands::GetCaretPos(LPPOINT lpPoint)\r
-{\r
- if (CUtils::IsMicrosoftWord()\r
- || CUtils::IsThunderbird()) {\r
- IMECHARPOSITION ImeCharPosition = {sizeof(IMECHARPOSITION)};\r
-\r
- CallWindowProc((WNDPROC)GetWindowLongPtr(GetFocus(), GWLP_WNDPROC), GetFocus(), WM_IME_REQUEST, IMR_QUERYCHARPOSITION, (LPARAM)&ImeCharPosition);\r
-// CUtils::Log(_T("ImeCharPosition: rc = %d, x = %d, y = %d"), 0, ImeCharPosition.pt.x, ImeCharPosition.pt.y);\r
-\r
- ScreenToClient(GetFocus(), &ImeCharPosition.pt);\r
-// CUtils::Log(_T("ScreenToClient: rc = %d, x = %d, y = %d"), 0, ImeCharPosition.pt.x, ImeCharPosition.pt.y);\r
-\r
- *lpPoint = ImeCharPosition.pt;\r
-// CUtils::Log(_T("x = %d, y = %d"), lpPoint->x, lpPoint->y);\r
-\r
- return TRUE;\r
- }\r
-\r
- return ::GetCaretPos(lpPoint);\r
-}\r
-\r
LRESULT CCommands::VScroll(UINT nSBCode, const int nTimes)\r
{\r
if (CUtils::IsMicrosoftWord()\r