diff --git a/CHANGELOG b/CHANGELOG index 09032fff3..0a81e748b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Fix TinyMCE download location (#6694) - Fix bug where a message/rfc822 part without a filename wasn't listed on the attachments list (#6494) - Fix handling of empty entries in vCard import (#6564) - Fix bug in parsing some IMAP command responses that include unsolicited replies (#6577) @@ -9,6 +10,7 @@ CHANGELOG Roundcube Webmail - Fix so mime_content_type check in Installer uses files that should always be available (i.e. from program/resources) (#6599) - Fix missing CSRF token on a link to download too-big message part (#6621) - Fix bug when aborting dragging with ESC key didn't stop the move action (#6623) +- Fix bug where next row wasn't selected after deleting a collapsed thread (#6655) RELEASE 1.3.8 ------------- diff --git a/jsdeps.json b/jsdeps.json index 7b511d714..8276d9e4e 100644 --- a/jsdeps.json +++ b/jsdeps.json @@ -36,7 +36,7 @@ { "lib": "tinymce", "version": "4.5.8", - "url": "http://download.ephox.com/tinymce/community/tinymce_4.5.8.zip", + "url": "https://download.tiny.cloud/tinymce/community/tinymce_4.5.8.zip", "dest": "program/js", "sha1": "08b0757264adb86066940bbafb7aa9ec0c7c6685", "license": "LGPL", @@ -56,7 +56,7 @@ { "lib": "tinymce-langs", "version": "4.5.8", - "url": "https://tinymce-services.azurewebsites.net/1/i18n/download?langs=ar,hy,az,eu,be,bs,bg_BG,ca,zh_CN,zh_TW,hr,cs,cs_CZ,da,nl,en_CA,en_GB,eo,et,fo,fi,fr_FR,fr_CH,gd,gl,ka_GE,de,de_AT,el,he_IL,hi_IN,hu_HU,is_IS,id,ga,it,ja,kab,km_KH,ko_KR,ku,ku_IQ,lv,lt,lb,mk_MK,ml_IN,nb_NO,oc,fa,fa_IR,pl,pt_BR,pt_PT,ro,ru,sk,sl_SI,es,es_MX,sv_SE,tg,ta,ta_IN,tt,th_TH,tr,tr_TR,ug,uk,uk_UA,vi,vi_VN,cy", + "url": "https://www.tiny.cloud/docs-4x/language/tinymce4x_languages.zip", "dest": "program/js/tinymce" }, { diff --git a/program/js/list.js b/program/js/list.js index 3459b2764..6ea37196b 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -355,8 +355,11 @@ remove_row: function(uid, sel_next) node.style.display = 'none'; + // Specify removed row uid in the select_next argument. + // It's needed because after removing a set of rows + // reference to the last selected message is lost. if (sel_next) - this.select_next(); + this.select_next(uid); delete this.rows[uid]; this.rowcount--; @@ -877,12 +880,12 @@ get_row_uid: function(row) /** * get first/next/previous/last rows that are not hidden */ -get_next_row: function() +get_next_row: function(uid) { if (!this.rowcount) return false; - var last_selected_row = this.rows[this.last_selected], + var last_selected_row = this.rows[uid || this.last_selected], new_row = last_selected_row ? last_selected_row.obj.nextSibling : null; while (new_row && (new_row.nodeType != 1 || new_row.style.display == 'none')) @@ -891,12 +894,12 @@ get_next_row: function() return new_row; }, -get_prev_row: function() +get_prev_row: function(uid) { if (!this.rowcount) return false; - var last_selected_row = this.rows[this.last_selected], + var last_selected_row = this.rows[uid || this.last_selected], new_row = last_selected_row ? last_selected_row.obj.previousSibling : null; while (new_row && (new_row.nodeType != 1 || new_row.style.display == 'none')) @@ -1031,15 +1034,12 @@ select: function(id) /** - * Select row next to the last selected one. + * Select row next to the specified or last selected one * Either below or above. */ -select_next: function() +select_next: function(uid) { - var next_row = this.get_next_row(), - prev_row = this.get_prev_row(), - new_row = (next_row) ? next_row : prev_row; - + var new_row = this.get_next_row(uid) || this.get_prev_row(uid); if (new_row) this.select_row(new_row.uid, false, false); },