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:
parent
b54220012d
commit
b526b4c3eb
3 changed files with 11 additions and 17 deletions
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue