Notepad: Fixed "Find Up" Modified: trunk/reactos/subsys/system/notepad/main.c _____
Modified: trunk/reactos/subsys/system/notepad/main.c --- trunk/reactos/subsys/system/notepad/main.c 2005-10-23 21:17:12 UTC (rev 18725) +++ trunk/reactos/subsys/system/notepad/main.c 2005-10-23 21:19:34 UTC (rev 18726) @@ -94,7 +94,7 @@
case CMD_ABOUT_WINE: DIALOG_HelpAboutWine(); break;
default: - break; + break; } return 0; } @@ -108,7 +108,7 @@ { BOOL bMatches; int iTargetLength; - + iTargetLength = _tcslen(pFindReplace->lpstrFindWhat);
/* Make proper comparison */ @@ -145,8 +145,8 @@
iTargetLength = _tcslen(pFindReplace->lpstrFindWhat);
+ /* Retrieve the window text */ iTextLength = GetWindowTextLength(Globals.hEdit); - if (iTextLength > 0) { pszText = (LPTSTR) HeapAlloc(GetProcessHeap(), 0, (iTextLength + 1) * sizeof(TCHAR)); @@ -158,25 +158,37 @@
SendMessage(Globals.hEdit, EM_GETSEL, (WPARAM) &dwBegin, (LPARAM) &dwEnd); if (bReplace && ((dwEnd - dwBegin) == iTargetLength)) - { + { if (NOTEPAD_FindTextAt(pFindReplace, pszText, iTextLength, dwBegin)) - { + { SendMessage(Globals.hEdit, EM_REPLACESEL, TRUE, (LPARAM) pFindReplace->lpstrReplaceWith); iAdjustment = _tcslen(pFindReplace->lpstrReplaceWith) - (dwEnd - dwBegin); - } - } + } + }
- dwPosition = dwEnd; - while(dwPosition < iTextLength) + if (pFindReplace->Flags & FR_DOWN) { - bMatches = NOTEPAD_FindTextAt(pFindReplace, pszText, iTextLength, dwPosition); - if (bMatches) - break; - - if (pFindReplace->Flags & FR_DOWN) + /* Find Down */ + dwPosition = dwEnd; + while(dwPosition < iTextLength) + { + bMatches = NOTEPAD_FindTextAt(pFindReplace, pszText, iTextLength, dwPosition); + if (bMatches) + break; dwPosition++; - else + } + } + else + { + /* Find Up */ + dwPosition = dwBegin; + while(dwPosition > 0) + { dwPosition--; + bMatches = NOTEPAD_FindTextAt(pFindReplace, pszText, iTextLength, dwPosition); + if (bMatches) + break; + } }
if (bMatches) @@ -188,18 +200,18 @@ SendMessage(Globals.hEdit, EM_SCROLLCARET, 0, 0); bSuccess = TRUE; } - else - { + else + { /* Can't find target */ if (bShowAlert) - { + { LoadString(Globals.hInstance, STRING_CANNOTFIND, szResource, SIZEOF(szResource)); _sntprintf(szText, SIZEOF(szText), szResource, pFindReplace->lpstrFindWhat); LoadString(Globals.hInstance, STRING_NOTEPAD, szResource, SIZEOF(szResource)); MessageBox(Globals.hFindReplaceDlg, szText, szResource, MB_OK); - } + } bSuccess = FALSE; - } + }
if (pszText) HeapFree(GetProcessHeap(), 0, pszText); @@ -220,7 +232,7 @@ while (NOTEPAD_FindNext(pFindReplace, TRUE, bShowAlert)) { bShowAlert = FALSE; - } + } }
/***********************************************************************