Index: scribus/ui/search.cpp
===================================================================
--- scribus/ui/search.cpp	(revision 20560)
+++ scribus/ui/search.cpp	(working copy)
@@ -1,4 +1,4 @@
-/*
+﻿/*
 For general Scribus (>=1.3.2) copyright and licensing information please refer
 to the COPYING file provided with the program. Following this notice may exist
 a copyright and/or license notice that predates the release of Scribus 1.3.2
@@ -267,7 +267,7 @@
 	ButtonsLayout->setSpacing( 5 );
 	ButtonsLayout->setMargin( 0 );
 	DoSearch = new QPushButton( tr( "&Search" ), this );
-	DoSearch->setDefault( true );
+	DoSearch->setEnabled(false);
 	ButtonsLayout->addWidget( DoSearch );
 	DoReplace = new QPushButton( tr( "&Replace" ), this );
 	DoReplace->setEnabled(false);
@@ -356,6 +356,11 @@
 
 	m_prefs = PrefsManager::instance()->prefsFile->getContext("SearchReplace");
 	readPrefs();
+	RText->setChecked(false);
+	RTextVal->setEnabled(false);
+	DoReplace->setEnabled(false);
+	AllReplace->setEnabled(false);
+	setEnabledR(false);
 }
 
 void SearchReplace::slotSearch()
@@ -375,6 +380,7 @@
 	int maxChar = m_item->itemText.length() - 1;
 	DoReplace->setEnabled(false);
 	AllReplace->setEnabled(false);
+	setEnabledR(false);
 	if (m_itemMode)
 	{
 		m_item->itemText.deselectAll();
@@ -498,6 +504,7 @@
 			}
 			if (found)
 			{
+				setEnabledR(true);
 				m_item->itemText.select(a, sText.length());
 				m_item->HasSel = true;
 				if (rep)
@@ -529,6 +536,8 @@
 			m_item->update();
 			DoReplace->setEnabled(false);
 			AllReplace->setEnabled(false);
+			setEnabledR(false);
+			clearReplaceCheckbox();
 			ScMessageBox::information(this, tr("Search/Replace"), tr("Search finished"));
 			m_item->itemText.setCursorPosition(0);
 			m_notFound = false;
@@ -634,8 +643,9 @@
 		}
 		if (found)
 		{
+			setEnabledR(true);
 			// m_doc->scMW()->CurrStED->updateProps(); FIXME
-			if (rep)
+			if (rep )
 			{
 				DoReplace->setEnabled(true);
 				AllReplace->setEnabled(true);
@@ -661,6 +671,7 @@
 {
 //	if (m_itemMode)
 //		m_doc->view()->slotDoCurs(false);
+	DoReplace->setEnabled(isReplacecheck());
 	slotDoReplace();
 	if (m_itemMode)
 	{
@@ -671,7 +682,7 @@
 
 void SearchReplace::slotDoReplace()
 {
-	if (m_itemMode)
+	if (m_itemMode && STextVal->text() != "" && SText->isChecked())
 	{
 		QString repl, sear;
 		int cs, cx;
@@ -812,6 +823,7 @@
 
 void SearchReplace::slotReplaceAll()
 {
+	AllReplace->setEnabled(isReplacecheck());
 	if (m_itemMode)
 	{
 //		m_doc->view()->slotDoCurs(false);
@@ -834,61 +846,73 @@
 void SearchReplace::enableTxSearch()
 {
 	bool setter = SText->isChecked();
-	STextVal->setEnabled(setter);
+	STextVal->setEnabled(SText->isChecked());
+	DoSearch->setEnabled(isSeachCheck());
 	Word->setEnabled(setter);
 	CaseIgnore->setEnabled(setter);
 	if (setter)
 		STextVal->setFocus();
 }
-
 void SearchReplace::enableStyleSearch()
 {
 	SStyleVal->setEnabled(SStyleVal->count() ? SStyle->isChecked() : false);
+	DoSearch->setEnabled(isSeachCheck());
+
 }
 
 void SearchReplace::enableAlignSearch()
 {
 	SAlignVal->setEnabled(SAlign->isChecked());
+	DoSearch->setEnabled(isSeachCheck());
 }
 
 void SearchReplace::enableFontSearch()
 {
 	SFontVal->setEnabled(SFont->isChecked());
+	DoSearch->setEnabled(isSeachCheck());
 }
 
 void SearchReplace::enableSizeSearch()
 {
 	SSizeVal->setEnabled(SSize->isChecked());
+	DoSearch->setEnabled(isSeachCheck());
 }
 
 void SearchReplace::enableEffSearch()
 {
 	SEffVal->setEnabled(SEffect->isChecked());
+	DoSearch->setEnabled(isSeachCheck());
 }
 
 void SearchReplace::enableFillSearch()
 {
 	SFillVal->setEnabled(SFill->isChecked());
+	DoSearch->setEnabled(isSeachCheck());
 }
 
 void SearchReplace::enableFillSSearch()
 {
 	SFillSVal->setEnabled(SFillS->isChecked());
+	DoSearch->setEnabled(isSeachCheck());
 }
-
 void SearchReplace::enableStrokeSearch()
 {
 	SStrokeVal->setEnabled(SStroke->isChecked());
+	DoSearch->setEnabled(isSeachCheck());
 }
 
 void SearchReplace::enableStrokeSSearch()
 {
 	SStrokeSVal->setEnabled(SStrokeS->isChecked());
+	DoSearch->setEnabled(isSeachCheck());
 }
 
 void SearchReplace::enableTxReplace()
 {
 	RTextVal->setEnabled(RText->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 	if (RText->isChecked())
 		RTextVal->setFocus();
 }
@@ -896,46 +920,73 @@
 void SearchReplace::enableStyleReplace()
 {
 	RStyleVal->setEnabled(RStyle->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 }
 
 void SearchReplace::enableAlignReplace()
 {
 	RAlignVal->setEnabled(RAlign->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 }
 
 void SearchReplace::enableFontReplace()
 {
 	RFontVal->setEnabled(RFont->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 }
 
 void SearchReplace::enableSizeReplace()
 {
 	RSizeVal->setEnabled(RSize->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 }
 
 void SearchReplace::enableEffReplace()
 {
 	REffVal->setEnabled(REffect->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 }
 
 void SearchReplace::enableFillReplace()
 {
 	RFillVal->setEnabled(RFill->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 }
 
 void SearchReplace::enableFillSReplace()
 {
 	RFillSVal->setEnabled(RFillS->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 }
 
 void SearchReplace::enableStrokeReplace()
 {
 	RStrokeVal->setEnabled(RStroke->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 }
 
 void SearchReplace::enableStrokeSReplace()
 {
 	RStrokeSVal->setEnabled(RStrokeS->isChecked());
+	setEnabledR(isReplacecheck());
+	DoReplace->setEnabled(isReplacecheck());
+	AllReplace->setEnabled(isReplacecheck());
 }
 
 void SearchReplace::clear()
@@ -1030,7 +1081,7 @@
 	RFont->setChecked(m_prefs->getBool("RFont", false));
 	RStyle->setChecked(m_prefs->getBool("RStyle", false));
 	RAlign->setChecked(m_prefs->getBool("RAlign", false));
-	RText->setChecked(m_prefs->getBool("RText", true));
+	RText->setChecked(m_prefs->getBool("RText", false));
 	RTextVal->setText(m_prefs->get("RTextVal", ""));
 	tmp = m_prefs->getInt("RStyleVal", findParagraphStyle(m_doc, m_doc->currentStyle));
 	if (tmp < 0 || tmp >= RStyleVal->count())
@@ -1108,3 +1159,69 @@
 	m_prefs->set("CaseIgnore", CaseIgnore->isChecked());
 	accept();
 }
+
+bool SearchReplace::isSeachCheck()
+{
+	if ((SFill->isChecked()) || (SStroke->isChecked()) || (SStyle->isChecked()) || (SFont->isChecked())
+				|| (SStrokeS->isChecked()) || (SFillS->isChecked()) || (SSize->isChecked()) || (SText->isChecked())
+				|| (SEffect->isChecked()))
+		return true;
+	else
+		return false;
+}
+
+bool SearchReplace::isReplacecheck()
+{
+	if (((RFill->isChecked()) || (RStroke->isChecked()) || (RStyle->isChecked()) || (RFont->isChecked())
+			|| (RStrokeS->isChecked()) || (RFillS->isChecked()) || (RSize->isChecked()) || (RText->isChecked())
+			|| (REffect->isChecked())))
+			return true;
+		else
+			return false;
+}
+
+void SearchReplace::setEnabledR(bool stter)
+{
+	RStroke->setEnabled(stter);
+	REffect->setEnabled(stter);
+	RAlign->setEnabled(stter);
+	RStrokeS->setEnabled(stter);
+	RFill->setEnabled(stter);
+	RFillS->setEnabled(stter);
+	RSize->setEnabled(stter);
+	RFont->setEnabled(stter);
+	RStyle->setEnabled(stter);
+	RText->setEnabled(stter);
+}
+
+void SearchReplace::clearReplaceCheckbox()
+{
+	REffect->setChecked(false);
+	int currentParaStyle = findParagraphStyle(m_doc, m_doc->currentStyle);
+	RAlignVal->setCurrentIndex(m_doc->currentStyle.alignment());
+	RStroke->setChecked(false);
+	RStrokeS->setChecked(false);
+	RFill->setChecked(false);
+	RFillS->setChecked(false);
+	RSize->setChecked(false);
+	RFont->setChecked(false);
+	RStyle->setChecked(false);
+	RText->setChecked(false);
+	RTextVal->setText("");
+	RStyleVal->setCurrentIndex(currentParaStyle);
+	RAlignVal->setCurrentIndex(m_doc->currentStyle.alignment());
+	setCurrentComboItem(RFontVal, m_doc->currentStyle.charStyle().font().scName());
+	setCurrentComboItem(RFillVal, m_doc->currentStyle.charStyle().fillColor());
+	setCurrentComboItem(RStrokeVal, m_doc->currentStyle.charStyle().strokeColor());
+	RSizeVal->setValue(m_doc->currentStyle.charStyle().fontSize() / 10.0);
+	enableTxReplace();
+	enableStyleReplace();
+	enableFontReplace();
+	enableSizeReplace();
+	enableEffReplace();
+	enableFillReplace();
+	enableFillSReplace();
+	enableStrokeReplace();
+	enableStrokeSReplace();
+
+}
Index: scribus/ui/search.h
===================================================================
--- scribus/ui/search.h	(revision 20560)
+++ scribus/ui/search.h	(working copy)
@@ -142,7 +142,11 @@
 	/// Number of matches found thus far in a search
 	int matchesFound;
 	int m_firstMatchPosition;
-
+private:
+	bool isSeachCheck();
+	bool isReplacecheck();
+	void setEnabledR(bool);
+	void clearReplaceCheckbox();
 };
 
 #endif // SEARCHREPLACE_H
