Elastic: Fix text selection with Shift+PageUp and Shift+PageDown in plain text editor when using Chrome (#7230)

pull/7242/head
Aleksander Machniak 5 years ago
parent e58c6547ca
commit 38d6659384

@ -15,6 +15,7 @@ CHANGELOG Roundcube Webmail
- Fix so messages in threads with no root aren't displayed separately (#4999) - Fix so messages in threads with no root aren't displayed separately (#4999)
- Fix bug where attachments with Content-Id were attached to the message on reply (#7122) - Fix bug where attachments with Content-Id were attached to the message on reply (#7122)
- Fix identity selection on reply when both sender and recipient addresses are included in identities (#7211) - Fix identity selection on reply when both sender and recipient addresses are included in identities (#7211)
- Elastic: Fix text selection with Shift+PageUp and Shift+PageDown in plain text editor when using Chrome (#7230)
RELEASE 1.4.3 RELEASE 1.4.3
------------- -------------

@ -331,7 +331,7 @@ function rcube_text_editor(config, id)
if (is_sig) if (is_sig)
data = data.replace(sig_mark, "\n" + signature.text); data = data.replace(sig_mark, "\n" + signature.text);
input.val(data).focus(); input.val(data).focus().trigger('input');
rcmail.set_caret_pos(input.get(0), 0); rcmail.set_caret_pos(input.get(0), 0);
}; };

@ -898,6 +898,7 @@ html.touch .mce-grid td {
font-family: monospace; font-family: monospace;
width: 100% !important; width: 100% !important;
padding-top: 2.5rem; padding-top: 2.5rem;
resize: none;
} }
& > iframe { // e.g. mailvelope frame & > iframe { // e.g. mailvelope frame

@ -3741,37 +3741,20 @@ function rcube_elastic_ui()
*/ */
function textarea_autoresize_init(textarea) function textarea_autoresize_init(textarea)
{ {
var resize = function(e) { // FIXME: Is there a better way to get initial height of the textarea?
clearTimeout(env.textarea_timer); var min_height = ($(textarea)[0].rows || 5) * 21,
env.textarea_timer = setTimeout(function() { resize = function(e) {
var area = $(e.target), var oldHeight = $(this).outerHeight();
initial_height = area.data('initial-height'), $(this).outerHeight(0);
scroll_height = area[0].scrollHeight; var newHeight = Math.max(min_height, this.scrollHeight);
$(this).outerHeight(oldHeight);
// do nothing when the area is hidden
if (!scroll_height) {
return;
}
if (!initial_height) {
area.data('initial-height', initial_height = scroll_height);
}
// strange effect in Chrome/Firefox when you delete a line in the textarea if (newHeight !== oldHeight) {
// the scrollHeight is not decreased by the line height, but by 2px $(this).height(newHeight);
// so jumps up many times in small steps, we'd rather use one big step
if (area.outerHeight() - scroll_height == 2) {
scroll_height -= 19; // 21px is the assumed line height
} }
area.outerHeight(Math.max(initial_height, scroll_height));
}, 10);
}; };
$(textarea).css('overflow-y', 'hidden').on('input', resize).trigger('input'); $(textarea).on('input', resize).trigger('input');
// Make sure the height is up-to-date also in time intervals
setInterval(function() { $(textarea).trigger('input'); }, 1000);
}; };
// Inititalizes smart list input // Inititalizes smart list input

Loading…
Cancel
Save