aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/composewindow.cpp8
-rw-r--r--src/config.cpp4
-rw-r--r--src/config.h5
3 files changed, 14 insertions, 3 deletions
diff --git a/src/composewindow.cpp b/src/composewindow.cpp
index 59eaccc..1c9b492 100644
--- a/src/composewindow.cpp
+++ b/src/composewindow.cpp
@@ -143,6 +143,14 @@ ComposeWindow::ComposeWindow(const ComposeContext &context,
// as the flag cleared, since markDirty() started it.
m_dirty = false;
m_autosaveTimer->stop();
+
+ // The body, whenever there is already a recipient: a Reply or a Forward
+ // has To: filled in from the context, so the first widget in the form
+ // would take focus and the user would have to click into the editor
+ // before typing. A New message keeps the default, since To: is empty and
+ // is genuinely the first thing to fill in.
+ if (!m_to->text().trimmed().isEmpty())
+ m_body->setFocus();
}
diff --git a/src/config.cpp b/src/config.cpp
index c6bedd2..b148102 100644
--- a/src/config.cpp
+++ b/src/config.cpp
@@ -531,7 +531,7 @@ void Config::load(const QString &path)
// other enum-ish key in this file (sync_on_exit, language, date_format)
// rather than being the one silent exception.
const QString quotePosition =
- settings.value(QStringLiteral("quote_position"), QStringLiteral("above"))
+ settings.value(QStringLiteral("quote_position"), QStringLiteral("below"))
.toString().trimmed();
if (quotePosition.compare(QStringLiteral("above"), Qt::CaseInsensitive) == 0) {
m_compose.quotePosition = ComposeSettings::QuotePosition::Above;
@@ -539,7 +539,7 @@ void Config::load(const QString &path)
m_compose.quotePosition = ComposeSettings::QuotePosition::Below;
} else {
addProblem(tr("[compose] quote_position '%1' is not recognised; "
- "expected above or below. Using above.")
+ "expected above or below. Using below.")
.arg(quotePosition));
}
diff --git a/src/config.h b/src/config.h
index 51fc1ee..3ddd76a 100644
--- a/src/config.h
+++ b/src/config.h
@@ -212,7 +212,10 @@ struct ComposeSettings
/// reply_no_quote does not).
enum class QuotePosition { Above, Below };
- QuotePosition quotePosition = QuotePosition::Above;
+ /// Below by default: the reply is typed at the top and the quote sits
+ /// under it, which is what the user asked for and what every mail client
+ /// they compare against does. Above is bottom-posting and stays available.
+ QuotePosition quotePosition = QuotePosition::Below;
/// Seeds the per-message toggle for New and Forward only. Reply and
/// Reply-all seed from whether the original carried a text/html part,