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;
- }
+ }
}
/***********************************************************************