diff --git a/pgadmin/dlg/dlgFindReplace.cpp b/pgadmin/dlg/dlgFindReplace.cpp
index 1a0cb41..d358647 100644
--- a/pgadmin/dlg/dlgFindReplace.cpp
+++ b/pgadmin/dlg/dlgFindReplace.cpp
@@ -128,9 +128,8 @@ void dlgFindReplace::FocusSearch()
 	txtFind->SetSelection(-1, -1);
 }
 
-void dlgFindReplace::OnClose(wxCloseEvent &ev)
+void dlgFindReplace::SaveSettings()
 {
-	// Save settings
 	settings->Write(wxT("FindReplace/Find"), txtFind->GetValue());
 	settings->Write(wxT("FindReplace/Replace"), txtReplace->GetValue());
 
@@ -147,7 +146,11 @@ void dlgFindReplace::OnClose(wxCloseEvent &ev)
 	settings->WriteBool(wxT("FindReplace/WholeWord"), chkOptionsWholeWord->GetValue());
 	settings->WriteBool(wxT("FindReplace/MatchCase"), chkOptionsMatchCase->GetValue());
 	settings->WriteBool(wxT("FindReplace/UseRegexps"), chkOptionsUseRegexps->GetValue());
+}
 
+void dlgFindReplace::OnClose(wxCloseEvent &ev)
+{
+	SaveSettings();
 	this->Hide();
 	if (ev.CanVeto())
 		ev.Veto();
@@ -155,6 +158,7 @@ void dlgFindReplace::OnClose(wxCloseEvent &ev)
 
 void dlgFindReplace::OnCancel(wxCommandEvent &ev)
 {
+	SaveSettings();
 	this->Hide();
 }
 
diff --git a/pgadmin/include/dlg/dlgFindReplace.h b/pgadmin/include/dlg/dlgFindReplace.h
index 9595f05..613d7c6 100644
--- a/pgadmin/include/dlg/dlgFindReplace.h
+++ b/pgadmin/include/dlg/dlgFindReplace.h
@@ -35,6 +35,7 @@ private:
 	void OnReplace(wxCommandEvent &ev);
 	void OnReplaceAll(wxCommandEvent &ev);
 	void ResetTabOrder();
+	void SaveSettings();
 
 	ctlSQLBox *sqlbox;
 
