X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=templates%2Fdefault%2Fjs%2Fdefault.js;h=109d5afa03819240c6727c76161512431433af88;hp=d0e4dbcbe6002aa47cb61f760f656d2880b37335;hb=c4faef335b2362c81b8ebf026d4066c12d70536c;hpb=353d074afac6827c90f4bb03e846c5e453d3b5b1 diff --git a/templates/default/js/default.js b/templates/default/js/default.js index d0e4dbcb..109d5afa 100644 --- a/templates/default/js/default.js +++ b/templates/default/js/default.js @@ -1,7 +1,7 @@ /** * This array is used to remember mark status of rows in browse mode * - * @copyright 2005-2018 The SquirrelMail Project Team + * @copyright 2005-2020 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ */ @@ -247,6 +247,17 @@ function sendMDN() { } var alreadyFocused = false; + +function cursorToTop(element) { + if (typeof element.selectionStart == 'number') + element.selectionStart = element.selectionEnd = 0; + else if (typeof element.createTextRange != 'undefined') { + var selectionRange = element.createTextRange(); + selectionRange.moveStart('character', 0); + selectionRange.select(); + } +} + function checkForm(smaction) { if (alreadyFocused) return; @@ -259,6 +270,7 @@ function checkForm(smaction) { document.forms['compose'].body.select(); } else if (smaction == "focus") { document.forms['compose'].body.focus(); + cursorToTop(document.forms['compose'].body); } } else { /* @@ -266,13 +278,20 @@ function checkForm(smaction) { */ var f = document.forms.length; var i = 0; + var remembered_form = -1; var pos = -1; + var remembered_pos = -1; while( pos == -1 && i < f ) { var e = document.forms[i].elements.length; var j = 0; while( pos == -1 && j < e ) { if ( document.forms[i].elements[j].type == 'text' || document.forms[i].elements[j].type == 'password' || document.forms[i].elements[j].type == 'textarea' ) { - pos = j; + if ( document.forms[i].elements[j].id.substring(0, 13) == '__lastfocus__' ) { + remembered_pos = j; + remembered_form = i; + } else if ( document.forms[i].elements[j].id.substring(0, 11) != '__nofocus__' ) { + pos = j; + } } j++; } @@ -280,6 +299,8 @@ function checkForm(smaction) { } if( pos >= 0 ) { document.forms[i-1].elements[pos].focus(); + } else if ( remembered_pos >= 0 ) { + document.forms[remembered_form].elements[remembered_pos].focus(); } } }