go to document settings > local layout
enter a space

the "bug" is that you have to validate. This seems unnecessary.

Suppose someone accidentally entered some text (maybe they thought it was the 
preamble) and then realized he was in the wrong spot and erased everything. If 
an unobservant (doesn't see the text "Please validate!") user doesn't realize 
that he has to validate an empty entry, he might just click a different tab. If 
he does this, and makes further changes, he will be unable to press the okPB 
and has to figure out that he needs to go back to local layout and validate. 
Further, even if the user validates an empty string, "Use Class Defaults" is 
now the default button and the user might wonder if he just changed something 
by accident.

This patch makes it so you do not have to validate an empty entry. It does this 
by moving the check for an empty entry from validate() to textChanged(). I keep 
a simple check of an empty string in validate() because validate() is called 
when you open document settings. If this check were removed, and if you were to 
enter a few empty lines and click on OK and then go back to document settings 
you would see "Layout is valid!". This is not that bad because it is true that 
it's valid, but this text didn't show before so it would be inconsistent.

An alternative patch would force the user to validate before changing the tab. 
A different alternative patch would not disable the okPB if the text has not 
been validated but when the okPB is pressed it would display a message along 
the lines of <<you need to go to the "local layout" tab and press the 
"validate" button>>

Comments?

Thanks,

Scott
diff --git a/src/frontends/qt4/GuiDocument.cpp b/src/frontends/qt4/GuiDocument.cpp
index 9f3f7ea..bd0dd10 100644
--- a/src/frontends/qt4/GuiDocument.cpp
+++ b/src/frontends/qt4/GuiDocument.cpp
@@ -606,12 +606,22 @@ void LocalLayout::apply(BufferParams & params)
 
 void LocalLayout::textChanged()
 {
-	static const QString unknown = qt_("Press button to check validity...");
-
-	is_valid_ = false;
-	validLB->setText(unknown);
-	validatePB->setEnabled(true);
-	convertPB->setEnabled(false);
+	string const layout =
+	fromqstr(locallayoutTE->document()->toPlainText().trimmed());
+        if (layout.empty()) {
+		is_valid_ = true;
+                validatePB->setEnabled(false);
+                validLB->setText("");
+                convertPB->hide();
+                convertLB->hide();
+        } else {
+		static const QString unknown = qt_("Press button to check validity...");
+
+		is_valid_ = false;
+		validLB->setText(unknown);
+		validatePB->setEnabled(true);
+		convertPB->setEnabled(false);
+	}
 	changed();
 }
 
@@ -649,13 +659,7 @@ void LocalLayout::validate() {
 
 	string const layout =
 		fromqstr(locallayoutTE->document()->toPlainText().trimmed());
-	if (layout.empty()) {
-		is_valid_ = true;
-		validatePB->setEnabled(false);
-		validLB->setText("");
-		convertPB->hide();
-		convertLB->hide();
-	} else {
+	if (!layout.empty()) {
 		TextClass::ReturnValues const ret = TextClass::validate(layout);
 		is_valid_ = (ret == TextClass::OK) || (ret == TextClass::OK_OLDFORMAT);
 		validatePB->setEnabled(false);

Reply via email to