From 1f019c8e5886461eb1ab0c053d88527d45ccacde Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Wed, 05 May 2010 15:14:53 -0400 Subject: [PATCH] - Set focus to editor on reply in HTML mode (#1486632) - Fix composing in HTML jumps cursor to body instead of recipients (#1486674) --- program/js/app.js | 30 ++++++++++++++++-------------- 1 files changed, 16 insertions(+), 14 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index dd3feee..3304c13 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -2621,8 +2621,10 @@ input_to.focus(); else if (input_subject.val() == '') input_subject.focus(); - else if (input_message && !html_mode) + else if (input_message) input_message.focus(); + + this.env.compose_focus_elem = document.activeElement; // get summary of all field values this.compose_field_hash(true); @@ -2789,12 +2791,12 @@ if (!show_sig) show_sig = this.env.show_sig; - var id = obj.options[obj.selectedIndex].value; - var input_message = $("[name='_message']"); - var message = input_message.val(); - var is_html = ($("input[name='_is_html']").val() == '1'); - var sig_separator = this.env.sig_above && (this.env.compose_mode == 'reply' || this.env.compose_mode == 'forward') ? '---' : '-- '; - var sig, cursor_pos, p = -1; + var sig, cursor_pos, p = -1, + id = obj.options[obj.selectedIndex].value, + input_message = $("[name='_message']"), + message = input_message.val(), + is_html = ($("input[name='_is_html']").val() == '1'), + sig_separator = this.env.sig_above && (this.env.compose_mode == 'reply' || this.env.compose_mode == 'forward') ? '---' : '-- '; if (!this.env.identity) this.env.identity = id @@ -2830,7 +2832,7 @@ if (p >= 0) { // in place of removed signature message = message.substring(0, p) + sig + message.substring(p, message.length); cursor_pos = p - 1; - } + } else if (pos = this.get_caret_pos(input_message.get(0))) { // at cursor position message = message.substring(0, pos) + '\n' + sig + '\n\n' + message.substring(pos, message.length); cursor_pos = pos; @@ -2838,7 +2840,7 @@ else { // on top cursor_pos = 0; message = '\n\n' + sig + '\n\n' + message.replace(/^[\r\n]+/, ''); - } + } } else { message = message.replace(/[\r\n]+$/, ''); @@ -2855,20 +2857,20 @@ this.set_caret_pos(input_message.get(0), cursor_pos); } else if (show_sig && this.env.signatures) { // html - var editor = tinyMCE.get(this.env.composebody); - var sigElem = editor.dom.get('_rc_sig'); + var editor = tinyMCE.get(this.env.composebody), + sigElem = editor.dom.get('_rc_sig'); // Append the signature as a div within the body if (!sigElem) { - var body = editor.getBody(); - var doc = editor.getDoc(); + var body = editor.getBody(), + doc = editor.getDoc(); sigElem = doc.createElement('div'); sigElem.setAttribute('id', '_rc_sig'); if (this.env.sig_above) { // if no existing sig and top posting then insert at caret pos - editor.getWin().focus(); // correct focus in IE + editor.getWin().focus(); // correct focus in IE & Chrome var node = editor.selection.getNode(); if (node.nodeName == 'BODY') { -- Gitblit v1.9.1