wip II
[sdk] / ide / src / dialogs / FindInFilesDialog.ec
index 2f7a26b..c0f8e0f 100644 (file)
@@ -647,10 +647,11 @@ private:
 
    unsigned int Main()
    {
+      const int stackSize = 1024;
       int frame, treeTop = 0;
       int globalFindCount = 0, filesSearchedCount = 0, filesMatchedCount = 0, dirsMatchedCount = 0;
       //double lastTime = GetTime();
-      SearchStackFrame stack[1024];
+      SearchStackFrame stack[stackSize];
       FindInFilesMode mode = this.mode;
       
       EditBox replaceEdit = null;
@@ -661,27 +662,42 @@ private:
       app.Lock();
          {
             char substring[512];
+            char containing[512];
+            char * and;
+            char * filterName;
+            if(!strcmp(filter.name, "All files"))
+               filterName = "files";
+            else
+               filterName = filter.name;
             if(nameCriteria[0])
                sprintf(substring, $" with file name matching \"%s\"", nameCriteria);
             else
                substring[0] = '\0';
+            if(contentCriteria && contentCriteria[0])
+               sprintf(containing, $" containing \"%s\"", contentCriteria);
+            else
+               containing[0] = '\0';
+            if(substring[0] && containing[0])
+               and = " and";
+            else
+               and = "";
             if(mode == directory)
             {
                char * s;
                ide.outputView.findBox.Logf(
-                     $"Searching \"%s\"%s for %s%s%s containing \"%s\"\n\n",
+                     $"Searching \"%s\"%s for %s%s%s%s\n\n",
                      (s = CopySystemPath(dir)), subDirs ? $" and its sub directories" : "",
-                     filter.name, substring, substring[0] ? $" and" : "", contentCriteria);
+                     filterName, substring, and, containing);
                delete s;
             }
             else if(mode == workspace)
                ide.outputView.findBox.Logf(
-                     $"Searching workspace files for files%s%s containing \"%s\"\n\n",
-                     substring, substring[0] ? $" and" : "", contentCriteria);
+                     $"Searching workspace files for %s%s%s%s\n\n",
+                     filterName, substring, and, containing);
             else if(mode == project)
                ide.outputView.findBox.Logf(
-                     $"Searching project %s files for files%s%s containing \"%s\"\n\n",
-                     project.name, substring, substring[0] ? $" and" : "", contentCriteria);
+                     $"Searching project %s files for %s%s%s%s\n\n",
+                     project.name, filterName, substring, and, containing);
          }
       app.Unlock();
       
@@ -699,7 +715,7 @@ private:
          strcpy(stack[0].path, dir);
          stack[0].fileList = FileListing { dir, extensions = filter.extensions };  // there should be a sorted = true/false 
 
-         for(frame = 0; frame >= 0 && !abort; )
+         for(frame = 0; frame >= 0 && frame < stackSize && !abort; )
          {
             if(stack[frame].fileList.Find())
             {