mirror of https://github.com/zulip/zulip.git
quote/reply: Leave message intact for IE/Chrome.
We had a bug where if you started typing a message and then used quote/reply (after the fact), we would overwrite the user's original message. The bug was kind of subtle--the internal call to "respond" to the message would select the message text, and then `smart_insert` would replace the selection, unless it was Firefox. Note that we now also allow you to cross-post replies, which is a plausible scenario, although possibly unintentional at times, too. I'm erring on the side of giving the user control here, but I'll add a warning in the next commit. Our compose fade feature should also prevent unintentional mixes here, too.
This commit is contained in:
parent
664ee8d017
commit
01d9a3b02c
|
@ -282,6 +282,10 @@ run_test('quote_and_reply', () => {
|
||||||
reply_type: 'personal',
|
reply_type: 'personal',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$('#compose-textarea').caret = (pos) => {
|
||||||
|
assert.equal(pos, 0);
|
||||||
|
};
|
||||||
|
|
||||||
quote_and_reply(opts);
|
quote_and_reply(opts);
|
||||||
|
|
||||||
current_msg_list.selected_message = function () {
|
current_msg_list.selected_message = function () {
|
||||||
|
|
|
@ -389,7 +389,28 @@ exports.quote_and_reply = function (opts) {
|
||||||
var message_id = current_msg_list.selected_id();
|
var message_id = current_msg_list.selected_id();
|
||||||
var message = current_msg_list.selected_message();
|
var message = current_msg_list.selected_message();
|
||||||
|
|
||||||
exports.respond_to_message(opts);
|
if (compose_state.has_message_content()) {
|
||||||
|
// The user already started typing a message,
|
||||||
|
// so we won't re-open the compose box.
|
||||||
|
// (If you did re-open the compose box, you
|
||||||
|
// are prone to glitches where you select the
|
||||||
|
// text, plus it's a complicated codepath that
|
||||||
|
// can have other unintended consequences.)
|
||||||
|
//
|
||||||
|
// Note also that we always put the quoted text
|
||||||
|
// above the current text, which explains us
|
||||||
|
// moving the caret below. I think this is what
|
||||||
|
// most users will want, and it's consistent with
|
||||||
|
// the behavior we had on FF before this change
|
||||||
|
// (which may have been an accident of
|
||||||
|
// implementation). If we change this decision,
|
||||||
|
// we'll need to make `insert_syntax_and_focus`
|
||||||
|
// smarter about newlines.
|
||||||
|
textarea.caret(0);
|
||||||
|
} else {
|
||||||
|
exports.respond_to_message(opts);
|
||||||
|
}
|
||||||
|
|
||||||
compose_ui.insert_syntax_and_focus("[Quoting…]\n", textarea);
|
compose_ui.insert_syntax_and_focus("[Quoting…]\n", textarea);
|
||||||
|
|
||||||
function replace_content(raw_content) {
|
function replace_content(raw_content) {
|
||||||
|
|
Loading…
Reference in New Issue