Browse Source

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

pull/7561/head
Aleksander Machniak 6 years ago
parent
commit
1c5f83d41c
  1. 1
      CHANGELOG
  2. 2
      program/js/editor.js
  3. 1
      skins/elastic/styles/widgets/editor.less
  4. 41
      skins/elastic/ui.js

1
CHANGELOG

@ -3,6 +3,7 @@ CHANGELOG Roundcube Webmail
- 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)
- Elastic: Fix text selection with Shift+PageUp and Shift+PageDown in plain text editor when using Chrome (#7230)
RELEASE 1.4.3
-------------

2
program/js/editor.js

@ -331,7 +331,7 @@ function rcube_text_editor(config, id)
if (is_sig)
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);
};

1
skins/elastic/styles/widgets/editor.less

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

41
skins/elastic/ui.js

@ -3741,37 +3741,20 @@ function rcube_elastic_ui()
*/
function textarea_autoresize_init(textarea)
{
var resize = function(e) {
clearTimeout(env.textarea_timer);
env.textarea_timer = setTimeout(function() {
var area = $(e.target),
initial_height = area.data('initial-height'),
scroll_height = area[0].scrollHeight;
// 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
// the scrollHeight is not decreased by the line height, but by 2px
// 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
// FIXME: Is there a better way to get initial height of the textarea?
var min_height = ($(textarea)[0].rows || 5) * 21,
resize = function(e) {
var oldHeight = $(this).outerHeight();
$(this).outerHeight(0);
var newHeight = Math.max(min_height, this.scrollHeight);
$(this).outerHeight(oldHeight);
if (newHeight !== oldHeight) {
$(this).height(newHeight);
}
};
area.outerHeight(Math.max(initial_height, scroll_height));
}, 10);
};
$(textarea).css('overflow-y', 'hidden').on('input', resize).trigger('input');
// Make sure the height is up-to-date also in time intervals
setInterval(function() { $(textarea).trigger('input'); }, 1000);
$(textarea).on('input', resize).trigger('input');
};
// Inititalizes smart list input

Loading…
Cancel
Save