diff -urN ../roundcubemail-1.6.1.orig/skins/elastic/styles/styles-fixes.css ./skins/elastic/styles/styles-fixes.css
--- ../roundcubemail-1.6.1.orig/skins/elastic/styles/styles-fixes.css 1970-01-01 03:00:00.000000000 +0300
+++ ./skins/elastic/styles/styles-fixes.css 2023-04-06 23:52:45.322295000 +0300
@@ -0,0 +1,50 @@
+body.task-settings #layout-content>.header>.header-title{display: inline;}
+
+#layout-content {overflow-y: hidden; overflow-x: auto;}
+/* Firefox */
+/*
+#layout-content {scrollbar-width: none;}
+*/
+/* IE 10+ */
+/*
+#layout-content {-ms-overflow-style: none;}
+*/
+/* Chrome/Safari/Webkit */
+/*
+#layout-content::-webkit-scrollbar {width: 0px; background: transparent;}
+*/
+
+.header #toolbar-menu {overflow-y: hidden; overflow-x: auto;}
+.header #toolbar-menu {height: 75px;}
+/* Firefox */
+/*
+.header #toolbar-menu {scrollbar-width: none;}
+*/
+/* IE 10+ */
+/*
+.header #toolbar-menu {-ms-overflow-style: none;}
+*/
+/* Chrome/Safari/Webkit */
+/*
+.header #toolbar-menu::-webkit-scrollbar {width: 0px; background: transparent;}
+*/
+/* Edge */
+@supports (-ms-ime-align: auto) {
+.header #toolbar-menu {overflow-x: hidden;}
+}
+
+.header #toolbar-menu {
+-webkit-touch-callout: none;
+-webkit-user-select: none;
+-khtml-user-select: none;
+-moz-user-select: none;
+-o-user-select:none;
+-ms-user-select: none;
+user-select: none;
+-webkit-user-drag: none;
+-khtml-user-drag: none;
+-moz-user-drag: none;
+-o-user-drag: none;
+-ms-user-drag: none;
+user-drag: none;
+}
diff -urN ../roundcubemail-1.6.1.orig/skins/elastic/templates/includes/layout.html ./skins/elastic/templates/includes/layout.html
--- ../roundcubemail-1.6.1.orig/skins/elastic/templates/includes/layout.html 2023-01-23 22:03:14.000000000 +0200
+++ ./skins/elastic/templates/includes/layout.html 2023-04-06 23:52:45.322608000 +0300
@@ -39,6 +39,7 @@
} catch (e) { }
+
action-">
diff -urN ../roundcubemail-1.6.1.orig/skins/elastic/ui.js ./skins/elastic/ui.js
--- ../roundcubemail-1.6.1.orig/skins/elastic/ui.js 2023-01-23 22:03:14.000000000 +0200
+++ ./skins/elastic/ui.js 2023-04-06 23:52:45.323796000 +0300
@@ -760,8 +760,127 @@
$('input.datepicker').each(function() { func(this); });
rcmail.addEventListener('insert-edit-field', func);
}
+
+ // scroll toolbar
+ var toolbarmenu = document.getElementById('toolbar-menu');
+ if (toolbarmenu) {
+ if (toolbarmenu.addEventListener) {
+ // scroll toolbar by mousewheel
+ if ('onwheel' in document) {
+ toolbarmenu.addEventListener('wheel', toolbarmenuOnWheel); // IE9+, Firefox17+, Chrome31+
+ } else if ('onmousewheel' in document) {
+ toolbarmenu.addEventListener('mousewheel', toolbarmenuOnWheel); // old variant
+ } else {
+ toolbarmenu.addEventListener('MozMousePixelScroll', toolbarmenuOnWheel); // Firefox17-
+ }
+ toolbarmenu.addEventListener('scroll', toolbarmenuOnScroll, { passive: true }); // for Edge
+
+ // scroll toolbar by drag
+ toolbarmenu.addEventListener('mousedown', toolbarmenuOnMouseDown);
+ toolbarmenu.addEventListener('mouseenter', toolbarmenuOnMouseEnter);
+ document.addEventListener('mousemove', toolbarmenuOnMouseMove)
+ document.addEventListener('mouseup', toolbarmenuOnMouseUp);
+ } else {
+ // IE8-
+
+ // scroll toolbar by mousewheel
+ toolbarmenu.attachEvent('onmousewheel', toolbarmenuOnWheel);
+
+ // scroll toolbar by drag
+ toolbarmenu.attachEvent('onmousedown', toolbarmenuOnMouseDown);
+ toolbarmenu.attachEvent('onmouseenter', toolbarmenuOnMouseEnter);
+ document.attachEvent('onmousemove', toolbarmenuOnMouseMove)
+ document.attachEvent('onmouseup', toolbarmenuOnMouseUp);
+ }
+ $(toolbarmenu).find('li a').on('dragstart', function() { return(false); });
+ }
};
+ var tbMouseX, tbMouseClicked = false, tbMouseMoved = false, tbScrollLeft;
+ function toolbarmenuOnMouseDown(e) {
+ e = e || window.event;
+ var toolbarmenu = document.getElementById('toolbar-menu');
+ if (toolbarmenu) {
+ tbMouseMoved = false;
+ tbMouseClicked = true;
+ tbMouseX = e.pageX;
+ tbScrollLeft = toolbarmenu.scrollLeft;
+ }
+ }
+ function toolbarmenuOnMouseMove(e) {
+ e = e || window.event;
+ if (tbMouseClicked) {
+ var toolbarmenu = document.getElementById('toolbar-menu');
+ if (toolbarmenu) {
+ if (!tbMouseMoved && (Math.abs(tbMouseX - e.pageX) > 2)) {
+ tbMouseMoved = true;
+ $(toolbarmenu).find('li a').each(function() {
+ if (!$(this).hasClass('disabled')) {
+ $(this).data('wasDisabled', 'false').addClass('disabled');
+ }
+ });
+ }
+ if (toolbarmenu.scrollLeft != tbScrollLeft + tbMouseX - e.pageX) {
+ toolbarmenu.scrollLeft = tbScrollLeft + tbMouseX - e.pageX;
+ }
+ e.preventDefault ? e.preventDefault() : (e.returnValue = false);
+ }
+ }
+ }
+ function toolbarEnableButtons() {
+ var toolbarmenu = document.getElementById('toolbar-menu');
+ if (toolbarmenu) {
+ $(toolbarmenu).find('li a').each(function() {
+ if (($(this).hasClass('disabled')) && ($(this).data('wasDisabled') == 'false')) {
+ $(this).data('wasDisabled', 'true').removeClass('disabled').data('wasDisabled', '');
+ }
+ });
+ }
+ }
+ function toolbarmenuOnMouseUp(e) {
+ e = e || window.event;
+ if (tbMouseClicked) {
+ tbMouseClicked = false;
+ if (tbMouseMoved) {
+ tbMouseMoved = false;
+ toolbarEnableButtons();
+ e.preventDefault ? e.preventDefault() : (e.returnValue = false);
+ }
+ }
+ }
+ function toolbarmenuOnMouseEnter(e) {
+ e = e || window.event;
+ if (tbMouseClicked && e.buttons == 0) {
+ tbMouseClicked = false;
+ if (tbMouseMoved) {
+ tbMouseMoved = false;
+ toolbarEnableButtons();
+ }
+ }
+ }
+ function toolbarmenuOnWheel(e) {
+ e = e || window.event;
+ var delta = e.deltaY || e.detail || e.wheelDelta;
+ if ((navigator.appVersion.toUpperCase().indexOf("TRIDENT") != -1) || (navigator.appVersion.toUpperCase().indexOf("MSIE") != -1)) delta=-delta;
+ if (delta >= 200 || delta <= -200) delta /= 25
+ else if (delta >= 100 || delta <= -100) delta /= 15;
+ else if (delta < 10 || delta > -10) delta *= 3;
+ var toolbarmenu = document.getElementById('toolbar-menu');
+ if (toolbarmenu) {
+ toolbarmenu.scrollLeft += delta;
+ e.preventDefault ? e.preventDefault() : (e.returnValue = false);
+ }
+ }
+ function toolbarmenuOnScroll(e) {
+ var toolbarmenu = document.getElementById('toolbar-menu');
+ if (toolbarmenu) {
+ if (toolbarmenu.scrollTop > 0) {
+ toolbarmenu.scrollTop = 0;
+ e.preventDefault ? e.preventDefault() : (e.returnValue = false);
+ }
+ }
+ }
+
/**
* Initializes light/dark mode
*/
@@ -4140,6 +4259,46 @@
$('')
.addClass(inverted ? 'inverted' : null)
.appendTo(node)
+ .on('touchstart', function(e) {
+ var ts, splitter = $(this), offset = node.position().left;
+
+ // Makes col-resize cursor follow the touch position on dragging
+ // and fixes issues related to iframes
+ splitter.width(10000).css(reverted ? 'left' : 'right', -5000);
+
+ // Disable selection on document while dragging
+ // It can happen when you move touch out of window, on top
+ document.body.style.userSelect = 'none';
+
+ // Start listening to touchmove events
+ $(document)
+ .on('touchmove.resizer', function(e) {
+ // Use of timeouts makes the move more smooth in Chrome
+ clearTimeout(ts);
+ ts = setTimeout(function() {
+ // For left-side-splitter we need the current offset
+ if (reverted) {
+ offset = node.position().left;
+ }
+ var cursor_position = rcube_event.get_touch_pos(e).x,
+ width = reverted ? node.width() + (offset - cursor_position) : cursor_position - offset;
+
+ set_width(width);
+ }, 5);
+ })
+ .on('touchend.resizer', function() {
+ // Remove registered events
+ $(document).off('.resizer');
+ $('iframe').off('.resizer');
+ document.body.style.userSelect = 'auto';
+
+ // Set back the splitter width to normal
+ splitter.width(6).css(reverted ? 'left' : 'right', -3);
+
+ // Save the current position (width)
+ save_pref(key, node.width());
+ });
+ })
.on('mousedown', function(e) {
var ts, splitter = $(this), offset = node.position().left;
diff -urN ../roundcubemail-1.6.1.orig/skins/elastic/ui.min.js ./skins/elastic/ui.min.js
--- ../roundcubemail-1.6.1.orig/skins/elastic/ui.min.js 1970-01-01 03:00:00.000000000 +0300
+++ ./skins/elastic/ui.min.js 2023-04-23 10:37:29.067999000 +0300
@@ -0,0 +1 @@
+"use strict";function rcube_elastic_ui(){var prefs,ref=this,mode="normal",color_mode="light",touch=false,ios=false,popups_close_lock,is_framed=rcmail.is_framed(),env={config:{standard_windows:rcmail.env.standard_windows,message_extwin:rcmail.env.message_extwin,compose_extwin:rcmail.env.compose_extwin,help_open_extwin:rcmail.env.help_open_extwin},checkboxes:0,small_screen_config:{standard_windows:true,message_extwin:false,compose_extwin:false,help_open_extwin:false}},menus={},content_buttons=[],frame_buttons=[],layout={menu:$("#layout-menu"),sidebar:$("#layout-sidebar"),list:$("#layout-list"),content:$("#layout-content")},buttons={menu:$("a.task-menu-button"),back_sidebar:$("a.back-sidebar-button"),back_list:$("a.back-list-button"),back_content:$("a.back-content-button")};this.register_content_buttons=register_content_buttons;this.menu_hide=menu_hide;this.menu_toggle=menu_toggle;this.menu_destroy=menu_destroy;this.popup_init=popup_init;this.about_dialog=about_dialog;this.headers_dialog=headers_dialog;this.import_dialog=import_dialog;this.props_dialog=props_dialog;this.headers_show=headers_show;this.spellmenu=spellmenu;this.searchmenu=searchmenu;this.headersmenu=headersmenu;this.header_reset=header_reset;this.compose_status=compose_status;this.attachmentmenu=attachmentmenu;this.mailtomenu=mailtomenu;this.recipient_selector=recipient_selector;this.show_list=show_list;this.show_sidebar=show_sidebar;this.smart_field_init=smart_field_init;this.smart_field_reset=smart_field_reset;this.form_errors=form_errors;this.switch_nav_list=switch_nav_list;this.searchbar_init=searchbar_init;this.pretty_checkbox=pretty_checkbox;this.pretty_select=pretty_select;this.datepicker_init=datepicker_init;this.bootstrap_style=bootstrap_style;this.toggle_list_selection=toggle_list_selection;this.get_screen_mode=get_screen_mode;this.is_mobile=is_mobile;this.is_touch=is_touch;screen_mode();layout_init();bootstrap_style();toolbar_init();content_frame_init();dropdowns_init();setup();resize();function setup(){var title,form,content_buttons=[];$.ui&&$.widget("ui.dialog",$.ui.dialog,{open:function(){if($(this.element).is(".iframe")){this.options.width=Math.max(576,this.options.width)}this._super();dialog_open(this);return this},close:function(){this._super();$(".select-menu:visible").remove();return this}});buttons.menu.on("click",function(){app_menu(true);return false});buttons.back_sidebar.on("click",function(){show_sidebar();return false});buttons.back_list.on("click",function(){show_list();return false});buttons.back_content.on("click",function(){show_content(true);return false});$(".searchbar").each(function(){searchbar_init(this)});if(is_framed&&!rcmail.env.extwin&&!parent.$(".ui-dialog:visible").length){if(title=$("h1.voice").first().text()){parent.$("#layout-content > .header > .header-title:not(.constant)").text(title)}}else if(!is_framed){title=layout.content.find(".boxtitle").first().detach().text();if(!title){title=$("h1.voice").first().text()}if(title){layout.content.find(".header > .header-title").text(title)}}if(!is_framed&&layout.content.length&&!layout.content.is(".no-navbar")&&!layout.content.children(".frame-content").length){env.frame_nav=$('