diff --git a/uppsrc/ide/Config.cpp b/uppsrc/ide/Config.cpp index f714c12b3..ad7befcf0 100644 --- a/uppsrc/ide/Config.cpp +++ b/uppsrc/ide/Config.cpp @@ -2,7 +2,7 @@ void Ide::SerializeWorkspace(Stream& s) { int i; - int version = 15; + int version = 16; s / version; s.Magic(0x12354); if(s.IsStoring()) { @@ -108,6 +108,9 @@ void Ide::SerializeWorkspace(Stream& s) { if(version >= 11) { s % find_file_search_string; } + if(version >= 16) { + s % find_file_search_in_current_package; + } if(version >= 12) SerializePlacement(s); diff --git a/uppsrc/ide/FindFile.cpp b/uppsrc/ide/FindFile.cpp index 97f79da68..85a5dfa6c 100644 --- a/uppsrc/ide/FindFile.cpp +++ b/uppsrc/ide/FindFile.cpp @@ -53,14 +53,13 @@ private: }; public: - FindFileWindow(const Workspace& wspc, const String& acctualPackage, - const String& serachString); + FindFileWindow(const Workspace& wspc, const String& acctualPackage); Vector GetFindedFilesData() const; -private: - void OnSearch(); + void Find(); +private: bool DoseFileMeetTheCriteria( const Package::File& file, const String& packageName, const String& query); bool IsActualPackage(const String& packageName); @@ -70,8 +69,7 @@ private: const Workspace& wspc; }; -FindFileWindow::FindFileWindow(const Workspace& wspc, const String& actualPackage, - const String& serachString) +FindFileWindow::FindFileWindow(const Workspace& wspc, const String& actualPackage) : wspc(wspc) , actualPackage(actualPackage) { @@ -84,13 +82,10 @@ FindFileWindow::FindFileWindow(const Workspace& wspc, const String& actualPackag list.EvenRowColor(); list.MultiSelect(); mask.NullText("Search"); - mask.SetText(serachString); mask.SelectAll(); mask.SetFilter(CharFilterFindFileMask); - mask << [=] { OnSearch(); }; - searchInCurrentPackage << [=] { OnSearch(); }; - - OnSearch(); + mask << [=] { Find(); }; + searchInCurrentPackage << [=] { Find(); }; } Vector FindFileWindow::GetFindedFilesData() const @@ -106,7 +101,7 @@ Vector FindFileWindow::GetFindedFilesData() const return data; } -void FindFileWindow::OnSearch() +void FindFileWindow::Find() { list.Clear(); String maskValue = ~mask; @@ -141,16 +136,24 @@ bool FindFileWindow::IsActualPackage(const String& packageName) void Ide::FindFileName() { - FindFileWindow findFileWindow(IdeWorkspace(), actualpackage, find_file_search_string); - if(findFileWindow.Execute() == IDOK) { - find_file_search_string = ~findFileWindow.mask; - - Vector data = findFileWindow.GetFindedFilesData(); - for(const FindFileData& currentData : data) { - AddHistory(); + FindFileWindow window(IdeWorkspace(), actualpackage); + window.mask.SetText(find_file_search_string); + window.searchInCurrentPackage.Set(find_file_search_in_current_package); + window.Find(); + + if(window.Execute() != IDOK) { + find_file_search_in_current_package = ~window.searchInCurrentPackage; + return; + } + + find_file_search_string = ~window.mask; + find_file_search_in_current_package = ~window.searchInCurrentPackage; + + Vector data = window.GetFindedFilesData(); + for(const FindFileData& currentData : data) { + AddHistory(); - String filePath = SourcePath(currentData.GetPackage(), currentData.GetFile()); - EditFile(filePath); - } + String filePath = SourcePath(currentData.GetPackage(), currentData.GetFile()); + EditFile(filePath); } } diff --git a/uppsrc/ide/ide.h b/uppsrc/ide/ide.h index 1261fd903..1c9a91225 100644 --- a/uppsrc/ide/ide.h +++ b/uppsrc/ide/ide.h @@ -638,7 +638,8 @@ public: enum { STYLE_NO_REPLACE, STYLE_CONFIRM_REPLACE, STYLE_AUTO_REPLACE }; - String find_file_search_string; + String find_file_search_string; + bool find_file_search_in_current_package; FindInFilesDlg ff; String iwc;