From 1184c4d49e73ba3a7e559dc286a3558ed7747e00 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Sun, 23 Oct 2005 21:19:34 +0000 Subject: [PATCH] Notepad: Fixed "Find Up" svn path=/trunk/; revision=18726 --- reactos/subsys/system/notepad/main.c | 54 +++++++++++++++++----------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/reactos/subsys/system/notepad/main.c b/reactos/subsys/system/notepad/main.c index e7890ae9711..75ecb84de64 100644 --- a/reactos/subsys/system/notepad/main.c +++ b/reactos/subsys/system/notepad/main.c @@ -94,7 +94,7 @@ static int NOTEPAD_MenuCommand(WPARAM wParam) case CMD_ABOUT_WINE: DIALOG_HelpAboutWine(); break; default: - break; + break; } return 0; } @@ -108,7 +108,7 @@ static BOOL NOTEPAD_FindTextAt(FINDREPLACE *pFindReplace, LPCTSTR pszText, int i { BOOL bMatches; int iTargetLength; - + iTargetLength = _tcslen(pFindReplace->lpstrFindWhat); /* Make proper comparison */ @@ -145,8 +145,8 @@ static BOOL NOTEPAD_FindNext(FINDREPLACE *pFindReplace, BOOL bReplace, BOOL bSho 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 @@ static BOOL NOTEPAD_FindNext(FINDREPLACE *pFindReplace, BOOL bReplace, BOOL bSho 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 @@ static BOOL NOTEPAD_FindNext(FINDREPLACE *pFindReplace, BOOL bReplace, BOOL bSho 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 @@ static VOID NOTEPAD_ReplaceAll(FINDREPLACE *pFindReplace) while (NOTEPAD_FindNext(pFindReplace, TRUE, bShowAlert)) { bShowAlert = FALSE; - } + } } /***********************************************************************