Don't insert multiple blank lines in the composer. Bug 778125.

* src/client/composer/composer-web-view.vala
  (ComposerWebView::load_html): Remove spacers around cursor, just add
  them after body and inline quote if present. Update unit tests.
This commit is contained in:
Michael James Gratton 2017-02-07 12:09:29 +11:00
parent b54220012d
commit b526b4c3eb
3 changed files with 11 additions and 17 deletions

View file

@ -166,18 +166,15 @@ public class ComposerWebView : ClientWebView {
bool have_body = !Geary.String.is_empty(body);
if (have_body) {
html.append(body);
html.append(SPACER);
}
if (!top_posting && !Geary.String.is_empty(quote)) {
if (have_body) {
html.append(SPACER);
}
html.append(quote);
html.append(SPACER);
}
html.append(SPACER);
html.append(CURSOR);
html.append(SPACER);
html.append(BODY_POST);
if (!Geary.String.is_empty(signature)) {

View file

@ -7,7 +7,7 @@
public class ComposerWebViewTest : ClientWebViewTestCase<ComposerWebView> {
private const string BODY_TEMPLATE = """<div id="geary-body">%s<div><br></div><div><br></div><div><br></div></div>""";
private const string BODY_TEMPLATE = """<div id="geary-body">%s<div><br></div><div><br></div></div>""";
public ComposerWebViewTest() {
base("ComposerWebViewTest");
@ -59,7 +59,7 @@ public class ComposerWebViewTest : ClientWebViewTestCase<ComposerWebView> {
load_body_fixture("<p>para</p>");
this.test_view.get_text.begin((obj, ret) => { async_complete(ret); });
try {
assert(this.test_view.get_text.end(async_result()) == "para\n\n\n\n\n\n");
assert(this.test_view.get_text.end(async_result()) == "para\n\n\n\n\n");
} catch (Error err) {
print("Error: %s\n", err.message);
assert_not_reached();
@ -71,7 +71,7 @@ public class ComposerWebViewTest : ClientWebViewTestCase<ComposerWebView> {
this.test_view.get_text.begin((obj, ret) => { async_complete(ret); });
try {
assert(this.test_view.get_text.end(async_result()) ==
"pre\n\n> quote\n> \npost\n\n\n\n\n\n");
"pre\n\n> quote\n> \npost\n\n\n\n\n");
} catch (Error err) {
print("Error: %s\n", err.message);
assert_not_reached();
@ -83,7 +83,7 @@ public class ComposerWebViewTest : ClientWebViewTestCase<ComposerWebView> {
this.test_view.get_text.begin((obj, ret) => { async_complete(ret); });
try {
assert(this.test_view.get_text.end(async_result()) ==
"pre\n\n> quote1\n> \n>> quote2\n>> \npost\n\n\n\n\n\n");
"pre\n\n> quote1\n> \n>> quote2\n>> \npost\n\n\n\n\n");
} catch (Error err) {
print("Error: %s\n", err.message);
assert_not_reached();
@ -105,7 +105,6 @@ long long, long long, long.
""");
} catch (Error err) {
print("Error: %s\n", err.message);
@ -132,7 +131,6 @@ long long, long long, long.
""");
} catch (Error err) {
print("Error: %s\n", err.message);
@ -166,7 +164,6 @@ long, long, long, long, long, long, long, long, long, long,
""");
} catch (Error err) {
print("Error: %s\n", err.message);

View file

@ -7,8 +7,8 @@
class ComposerPageStateTest : ClientWebViewTestCase<ComposerWebView> {
private const string COMPLETE_BODY_TEMPLATE = """<div id="geary-body">%s<div><br></div><div><br></div><div><br></div></div>""";
private const string CLEAN_BODY_TEMPLATE = "%s<div><br></div><div><br></div><div><br></div>";
private const string COMPLETE_BODY_TEMPLATE = """<div id="geary-body">%s<div><br></div><div><br></div></div>""";
private const string CLEAN_BODY_TEMPLATE = "%s<div><br></div><div><br></div>";
public ComposerPageStateTest() {
base("ComposerPageStateTest");
@ -178,7 +178,7 @@ unknown://example6.com
load_body_fixture("<p>para</p>");
try {
assert(WebKitUtil.to_string(run_javascript(@"window.geary.getText();")) ==
"para\n\n\n\n\n");
"para\n\n\n\n");
} catch (Geary.JS.Error err) {
print("Geary.JS.Error: %s\n", err.message);
assert_not_reached();
@ -193,7 +193,7 @@ unknown://example6.com
load_body_fixture("<p>pre</p> <blockquote><p>quote</p></blockquote> <p>post</p>");
try {
assert(WebKitUtil.to_string(run_javascript(@"window.geary.getText();")) ==
@"pre\n\n$(q_marker)quote\n$(q_marker)\npost\n\n\n\n\n");
@"pre\n\n$(q_marker)quote\n$(q_marker)\npost\n\n\n\n");
} catch (Geary.JS.Error err) {
print("Geary.JS.Error: %s", err.message);
assert_not_reached();
@ -208,7 +208,7 @@ unknown://example6.com
load_body_fixture("<p>pre</p> <blockquote><p>quote1</p> <blockquote><p>quote2</p></blockquote></blockquote> <p>post</p>");
try {
assert(WebKitUtil.to_string(run_javascript(@"window.geary.getText();")) ==
@"pre\n\n$(q_marker)quote1\n$(q_marker)\n$(q_marker)$(q_marker)quote2\n$(q_marker)$(q_marker)\npost\n\n\n\n\n");
@"pre\n\n$(q_marker)quote1\n$(q_marker)\n$(q_marker)$(q_marker)quote2\n$(q_marker)$(q_marker)\npost\n\n\n\n");
} catch (Geary.JS.Error err) {
print("Geary.JS.Error: %s\n", err.message);
assert_not_reached();