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